Text not appearing in examples when run on a FT232H

The following example runs fine and uses the same assets not working in PyPortal:
"""
This test will initialize the display using displayio and draw a solid green
background, a smaller purple rectangle, and some yellow text. All drawing is done
using the displayio module.

Pinouts are for the PiTFT and should be run in CPython.
"""
import board
import terminalio
import displayio
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
import adafruit_ili9341

# Release any resources currently in use for the displays
displayio.release_displays()

spi = board.SPI()
tft_cs = board.D4
tft_dc = board.D5

display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, reset=board.D6)
display = adafruit_ili9341.ILI9341(display_bus, width=320, height=240)

# Make the display context
splash = displayio.Group(max_size=10)
display.show(splash)

# Draw a green background
color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x00FF00  # Bright Green

bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)

splash.append(bg_sprite)

# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(display.width - 40, display.height - 40, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0xAA0088  # Purple
inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=20, y=20)
splash.append(inner_sprite)

my_bitmap = displayio.OnDiskBitmap(open("bitcoin_background.bmp", "rb"))
my_tilegrid = displayio.TileGrid(my_bitmap, pixel_shader=displayio.ColorConverter())
splash.append(my_tilegrid)

# Draw a label
text_group = displayio.Group(max_size=10, x=70, y=120)
font = bitmap_font.load_font("Arial-Bold-24-Complete.bdf")
text = "Hello World!"
text_area = label.Label(font, text=text, color=0x000000)
text_group.append(text_area)  # Subgroup for text scaling
splash.append(text_group)

while True:
    pass

I'm not sure if it's drawing stuff out of order or what. The same code that fails to work on the FT232H works fine on the Raspberry Pi.

Also, no errors occur. It's just silently not working.

Can you provide more details of the hardware setup. What display is attached to the FT232H? What host is the FT232H attached to? Are you using the newer USB C FT232H breakout?

Sure, I have a 2.8" resistive TFT breakout, I'm using the older FT232H, though I have a newer one as well, and I'm using MacOS for the operating system, though I could try it out on Windows and Linux as well.

The old breakout should be fine. And MacOS should also be OK. As a hardware sanity check, does it work with PIL like this example?
https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/tft-display

Well, it's outputting the background just fine and the Blinka Displayio library uses PIL, so I'm fairly certain it's not hardware related. I think the issue exists in the Blinka PyPortal library here specifically, although now that I'm thinking about it, I do have a theory. I have the display refresh happening in a separate thread and I'm wondering if due to a race condition that it's getting the background but not the text set before it tries to draw and then gets stuck in a weird loop. The FT232H is noticeably slower at drawing than the Pi 4.
So the solution may be to not have displayio auto refresh on until it's all drawn out.

As an example. Here's the quotes running:

OK, cool. Good test. The hardware seems fine then. So probably something software. Do you need help with this? I'm guessing this not something in the Blinka/FT232H layer of things. Probably more along the lines of what you're thinking above.

Thanks, I'll look into this more once I have my guide written. I'm making some changes to the PyPortal library and it'll be easier to just wait until those changes are in.

My changes are now in if you would like to take a look.

How does this repo (PyPortal) come into play for the example in the original post above?

Oh right, here's the quotes example that I was running. You'll need to get the resources from https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/master/PyPortal_Quotes
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
"""
You can find any resources in the associated Learn Guide at:
https://learn.adafruit.com/pyportal-adafruit-quote-board
"""
import os
import time
from adafruit_pyportal import PyPortal

# Setup the Display
import board
import displayio
import adafruit_ili9341

displayio.release_displays()
spi = board.SPI()
tft_cs = board.D4
tft_dc = board.D5

display_bus = displayio.FourWire(
    spi, command=tft_dc, chip_select=tft_cs, reset=board.D6
)
display = adafruit_ili9341.ILI9341(display_bus, width=320, height=240)

# Set up where we'll be fetching data from
DATA_SOURCE = "https://www.adafruit.com/api/quotes.php"
QUOTE_LOCATION = [0, "text"]
AUTHOR_LOCATION = [0, "author"]

# the current working directory (where this file is)
try:
    cwd = os.path.dirname(os.path.realpath(__file__))
except AttributeError:
    cwd = ("/" + __file__).rsplit("/", 1)[0]

pyportal = PyPortal(
    display=display,
    debug=True,
    url=DATA_SOURCE,
    json_path=(QUOTE_LOCATION, AUTHOR_LOCATION),
    default_bg=cwd + "/quote_background.bmp",
    text_font=cwd + "/fonts/Arial-ItalicMT-17.bdf",
    text_position=((20, 120), (5, 210)),  # quote location  # author location
    text_color=(0xFFFFFF, 0x8080FF),  # quote text color  # author text color
    text_wrap=(35, 0),  # characters to wrap for quote  # no wrap for author
    text_maxlen=(180, 30),  # max text size for quote & author
)

# speed up projects with lots of text by preloading the font!
pyportal.preload_font()

while True:
    try:
        value = pyportal.fetch()
        print("Response is", value)
    except (ValueError, RuntimeError) as e:
        print("Some error occurred, retrying! -", e)
    time.sleep(60)

I noticed that the openweather example's time is not appearing on the Pi. It may or may not be related.

Using adafruit_display_text 2.7.5 seems to have fixed the openweather time not appearing issue. I wonder if this would fix this issue.

How did you deal with neopixel support when running through the FT232H?

I'm just not using it. I can confirm that this is an issue with the Display Text library. Rolling back to version 2.7.5 fixed it.

Thanks for taking a look, but I'm going to close this since the issue isn't in this library. Issue https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/issues/63 is now the issue and there's already a potential fix.

OK, cool. If it starts looking like something FT232H related, feel free to ping me.

Thanks. Sounds good.


feat: add elkowar/pipr

#6283 elkowar/pipr: A tool to interactively write shell pipelines
$ aqua g -i elkowar/pipr

Thanks!

https://github.com/elkowar/pipr#using-the-static-binary

If none of the listed installation-options are available to you, you can simply use the static binary provided on the releases page. This should work on most unix-based systems.

🤔 This description seems to be wrong.

It works on linux/amd64.
shunsuke-suzuki@lima-default:/Users/shunsuke-suzuki/repos/src/github.com/aquaproj/aqua-registry$ pipr --help
Usage: /home/shunsuke-suzuki.linux/.local/share/aquaproj-aqua/pkgs/github_release/github.com/elkowar/pipr/v0.0.16/pipr/pipr [options]

Options:
    -d, --default TEXT  text inserted into the textfield on startup
    -o, --out-file FILE write final command to file
        --in-file FILE  read initial command from file
        --config-reference
                        print out the default configuration file
    -r, --raw-mode      keep linebreaks in finished command when closing
        --no-isolation  disable isolation. This will run the commands directly
                        on your system, without protection. Take care.
    -h, --help          print this help menu

Thanks!

Released. https://github.com/aquaproj/aqua-registry/releases/tag/v3.55.0


Add vercel-config flags for all our endpoints

All API endpoints that update the database should be https://vercel.com/docs/storage/edge-config so that we can toggle them on/off. We should have 3 separate toggles:

hasEnabledPublicEndpoints - for all API endpoints that can be used with session ids
hasEnabledAuthenticatedEndpoints - for all API endpoints that can be used with session ids
hasEnabledNewUserLogin - A special flag just for the onNewLogin logic that triggers after a user logins in via thirdweb for the first time

We also want to ensure we provide human-readable alerts when someone tries to use these endpoints while the flag is disabled. A toast should come up that says "The site is currently in maintenance mode. Please come back later."

When I say "API" i mean every endpoint a user can hit to mutate the backend. So all our actions (/src/actions) and our login flow (pages/api/auth) are included


Add local refactoring code actions based on swift-syntax

Introduce new local refactoring code actions based on the Swift syntax tree, without going through SourceKit.
This change includes a number of new refactoring code actions. Most of them adapt the syntax refactorings from the SwiftRefactor module of swift-syntax:

Add digit separators to an integer literal, e.g., 100000 -> 1_000_000.
Remove digit separators from an integer literal, e.g., 1_000_000 -> 1000000. (from SwiftRefactor)
Format a raw string literal, e.g., "Hello \#(world)" ->  ##"Hello \#(world)"##
Migrate to new if let syntax, e.g., if let x = x { ... } -> if let x { ... }
Replace opaque parameters with generic parameters, e.g., func f(p: some P) --> func f<T1: P>(p: T1).

This is generally easy to do, requiring one conformance to provide a name for the refactoring:
extension AddSeparatorsToIntegerLiteral: SyntaxRefactoringCodeActionProvider {
  public static var title: String { "Add digit separators" }
}

There are also a few new refactoring code actions implemented here. These could be sunk down into SwiftRefactor to be made more widely available, or stay here if they're too IDE-centric to live in swift-refactor:

Convert an integer literal from one base to another (e.g., 172387 -> 0x2a163).
Convert JSON into a Codable struct.
Apply Demorgan's law, e.g., !(a || b) --> !a && !b.

There is a small amount of overlap between the refactoring code actions added here and those SourceKit provides. For example, SourceKit provides a "Simplify long number literal" operation that is similar to "Add digit separators". We have several directions we could go with those:

Don't add the new refactoring code actions if they conflict. This would be sad.
Filter out the SourceKit ones so the user doesn't see them. We can keep the list in SourceKit-LSP.
Remove the redundant actions from SourceKit. Clients of SourceKit (not -LSP) would lose access to them.
Replace the SourceKit implementation with the ones from SwiftRefactor to server SourceKit clients, and filter them out (like option 2) for LSP clients.

Most of the code here is actually from @CodaFi, and I've given it a light dusting to bring it up to modern times.

@swift-ci please test

@swift-ci please test

@swift-ci please test windows

@swift-ci please test Windows

Love the JSON-to-Codable conversion, that looks super useful!

@swift-ci please test

@swift-ci please test Windows

@swift-ci please test Windows

I'm tackling the first part of this, exposing swift-syntax-based actions, via the PR at https://github.com/apple/sourcekit-lsp/pull/1179. It drops Demorgans and the JSON-to-structs refactoring actions and addresses most of the feedback here. (Not all of it, yet)

Everything but DeMorgan's has merged via other pull requests, so I'm going to close this out. DeMorgan's needs a some work that I'm not up for just now.


pyVim no module

Hi,
i have a requirement to get the pci details for my centos machine,hence i used above code and i am getting below error.
Traceback (most recent call last):
File "pci.py", line 22, in
from pyVim import connect
ImportError: No module named pyVim

I am facing same issue, were you able to solve this issue ?

Hi @shekharHPE ,
I know it is late. From my understanding, I think you had not included pyVmomi into PYTHONPATH. please set PYTHONPATH.

You're installing pyvim not pyVim
https://github.com/prompt-toolkit/pyvim

I had a similar issue.  DO NOT install "pyvim".  This is a completely separate package (vim editor implemented in python).  However, the name conflicts enough that the files get messed up.
This is what cleared it up for me:
pip3 uninstall pyvim
# may complain about manually added files.
cd /usr/local/lib/python3.7/site-packages
rm -rf pyvim
pip3 install --force pyvmomi

I'm getting the same issue. Requests is already installed. ansible_python_interpreter=/usr/bin/python3.6. I really cant find what is causing the issue. This is when ansible calls the docker_image module. Please help

name: Build container image
hosts: localhost
vars:
ansible_python_interpreter: /usr/bin/python3.6
become: yes
tasks:

name: test docker image
community.docker.docker_image:
name: image_base:latest
source: build
build:
path: /tmp/container

"msg": "Failed to import the required Python library (requests) on vdev.bde.net's Python /usr/bin/python3.6. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"

My ansible
ansible [core 2.11.12]
config file = /home/sandbox/test_docker_ansible/ansible.cfg
configured module search path = ['/home/sandbox/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/sandbox/.local/lib/python3.6/site-packages/ansible
ansible collection location = /home/sandbox/.ansible/collections:/usr/share/ansible/collections
executable location = /home/sandbox/.local/bin/ansible
python version = 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
jinja version = 3.0.3
libyaml = True
pip3.6 list
ansible            4.10.0
ansible-core       2.11.12
requests           2.27.1


Add Ledger RPC Tests (RIPD-1297):

Migrate tests in remote-test.js to cpp/jtx. Add coverage for ledger_entry RPC request.

:+1:

regarding the deletion of existing remote-test.js test - nope. The plan of record is to migrate all tests and then just do mass delete when the migration tasks are complete.

@ximinez please let me know if this PR is passable now...

Ewww, a merge commit!

I think that snuck in when I rebased yesterday - let me try to clean that up

...there I think that looks better

Merged as 35504f17233fd1520167ff4f4fe81052e98f8274


[BUG] tiles missing >= zoom 7

Describe the bug
In the generated planet.mbtiles, not all tiles are present.
To Reproduce

Run current full planet gen.
Open sqlite3 planet.mbtiles

sqlite> select count(*) from tiles_shallow where zoom_level = 1;
4
sqlite> select count(*) from tiles_shallow where zoom_level = 2;
16
sqlite> select count(*) from tiles_shallow where zoom_level = 3;
64
sqlite> select count(*) from tiles_shallow where zoom_level = 4;
256
sqlite> select count(*) from tiles_shallow where zoom_level = 5;
1024
sqlite> select count(*) from tiles_shallow where zoom_level = 6;
4096
sqlite> select count(*) from tiles_shallow where zoom_level = 7;
13986
sqlite> select count(*) from tiles_shallow where zoom_level = 8;
55101
sqlite> select count(*) from tiles_shallow where zoom_level = 9;
217800
sqlite> select count(*) from tiles_shallow where zoom_level = 10;
853834

As you can see, it goes perfectly until zoom 6, but from zoom 7 some tiles are missing.
Expected behavior
All tiles should be generated.
Environment (please complete the following information):

Hardware: Linux server
OS: Ubuntu 22
Java version and distribution:

java -version
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-122.04)
OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-122.04, mixed mode, sharing)

Maven version: -

It's interesting that these number are more or less consistent between a run today and one done 2 months ago.
sqlite> select count(*) from tiles_shallow where zoom_level = 1;
4
sqlite> select count(*) from tiles_shallow where zoom_level = 2;
16
sqlite> select count(*) from tiles_shallow where zoom_level = 3;
64
sqlite> select count(*) from tiles_shallow where zoom_level = 4;
256
sqlite> select count(*) from tiles_shallow where zoom_level = 5;
1024
sqlite> select count(*) from tiles_shallow where zoom_level = 6;
4096
sqlite> select count(*) from tiles_shallow where zoom_level = 7;
13986
sqlite> select count(*) from tiles_shallow where zoom_level = 8;
55100
sqlite> select count(*) from tiles_shallow where zoom_level = 9;
217779
sqlite> select count(*) from tiles_shallow where zoom_level = 10;
853600

In the openmaptiles profile, "land" is indicated by absence of any data, and planetiler doesn't empty tiles so the counts dropping starting at z7 are from entire tiles being excluded from the output (probably starting in antarctica).
Also FYI you should upgrade to java 21 - newer versions of planetiler won't work with java 17 anymore.

So with a decent client lib it should just work correctly, right? Thanks for the java 21 hint, I didn't see the update 2 month ago.

In the openmaptiles profile, "land" is indicated by absence of any data

Land and the absence of data would be a zero-byte tile, not the absence of a tile.

Right, the translation from "no data" to zero-byte tile needs to happen at some point in the stack.  A tile server like tileserver-gl will return a 204 response when the tile is missing from the underlying data source. The pmtiles javascript client passes an empty byte array to maplibre when the tile is missing from the index, and maplibre-gl handles a 404 as no data.

Do you mean what's missing is a zero byte file? I'll be serving this directly, from the filesystem, without any tile server.
So basically I need to make sure that all 404s are returned as an empty string and 200?

What client are you be using?

I want to make it compatible with every client which works with the reference implementation (for example Mapbox GL JS 1.x, etc.). So I need to do this server side.

I think this nginx block should take care of it, but I need a bit more testing:
location / {
    try_files $uri $uri/ @empty_response;
}

location @empty_response {
    error_page 404 =200 /empty_200;
}

location = /empty_200 {
    return 200 '';
}

Would return 204; work?

I'm not sure how browsers, proxies, CloudFlare, etc. handle 204 requests.
I'd like to replicate the behaviour of the reference implementation - which if I understand correctly - serves empty strings with 200.
The reference implementation + https://github.com/consbio/mbtileserver returns 200 + content-type: application/x-protobuf
(tested on /14/0/16284.pbf and /14/0/16247.pbf)

Do you mean what's missing is a zero byte file? I'll be serving this directly, from the filesystem, without any tile server. So basically I need to make sure that all 404s are returned as an empty string and 200?

Directly from the filesystem? If so, then you actually need the 0 byte files. If you're serving it not directly, but with a HTTP server between the tiles and the client, then you could transform missing files into zero byte 2xx responses. You'll just have to be careful about distinguishing between tiles that are missing because they're really 0-byte tiles, tiles that are missing because they're invalid (e.g. 0/1/2 or 0/1/-1), URLs that aren't tiles at all, and tiles outside your zoom range and bounding box.

returns 200 with content-type: application/x-protobuf

As per the specification, the MIME type SHOULD be application/vnd.mapbox-vector-tile

Yes, I meant that nginx will be serving them directly from the filesystem, without any tile server running. Thank you for the explanation, I understand it now and will update the MIME type.


Scraper fixes

Here are more scraper fixes. The first half are general upkeep, and the second half are for handling errors that arise from the fact that it's 2016 and there aren't any 2016-dated reports.

This is an outstanding set of fixes -- thank you so much, @divergentdave!

Deployed to server


Dev environment updates

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@6f3b280). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff            @@
##             master     #31   +/-   ##
========================================
  Coverage          ?   7.24%
========================================
  Files             ?      39
  Lines             ?     538
  Branches          ?      47
========================================
  Hits              ?      39
  Misses            ?     456
  Partials          ?      43

Continue to review full report at Codecov.

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


Use uuid lib for Visual Studio guids

In the Visual Studio area, use uuid (Python standard library) to generate GUID identifiers instead of specifically using md5. Simplifies things as uuid lib can provide already formatted strings of the form that we need.
This is split off from PR #3447 by request.
Signed-off-by: Mats Wichmann<EMAIL_ADDRESS>Contributor Checklist:

[X] I have created a new test or updated the unit tests to cover the new/changed functionality.
[X] I have updated src/CHANGES.txt (and read the README.txt in that directory)
[X] I have updated the appropriate documentation

Seems like this will likely cause rebuilds?
If so, please add a "NOTE: This will cause rebuilds if you use XYZ builders"
Otherwise looks great to me!

I have to think about that, don't know when I'll go back to study.  I thought this only applied when asking to build a solution/project file, so it would be unlikely to affect any existing builds?

Ummm, documentation helpfully says:

Currently, only Visual Studio v9.0 and Visual Studio version v11 are implemented

Is that out of date?  There seems to be code for later versions (14.x)

Likely out of date.
So any build which takes the outputs of:

MSVSSolution()
or
MSVSProject()
Should expect a rebuild.
If the generated files from those are the terminal targets then it shouldn't rebuild.
Does that sound right?


Better mark validation error in topic

If I have an invalid ID in a topic:
<topic id="%50">

I will get in the console output something like this:
file:../flowers/topics/introduction.dita:3:17: Attribute value "%50" of type ID must be an NCName when namespaces are enabled.

so the error line is not marked with an [ERROR] tag.

Which DITA-OT version and how was it run. If I mock a test case like that and run it with 4.2 on the command line, I get
Error: file:/Volumes/tmp/src/topic.dita:3:17: Attribute value "%50" of type ID must be an NCName when namespaces are enabled.

The message content comes from SAXException thrown by the XML parser. In order to get some message ID to the message, we could add a generic parsing message that doens't have a <reason> other than the message text from the XML parser.

So if I run DITA OT 4.2 on Windows on a DITA Map which contains a topic like this:
<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">

<topic id="%50">

<title>Introduction</title>

</topic>

the command line I run and the error look like this (notice no [Error:] marker before the reported error):
"C:\Users\radu_coravu\Downloads\dita-ot-4.2/bin/dita.bat" -f html5 -o D:\samples\dita\flowers/out/html5 -t D:\samples\dita\flowers/temp/html5 -i D:\samples\dita\flowers\flowers.ditamap
file:/D:/samples/dita/flowers/topics/introduction.dita:3:17: Attribute value "%50" of type ID must be an NCName when namespaces are enabled.

On Mac OS indeed there is an "Error:" marker with a red foreground.

Ok, so this is a case where on Windows the CLI doesn't use colours in the log and the prefix is missing. I'll open a PR to make sure the prefixes are output on Windows too.

@jelovirt yes, also when the -no-colors flag is used the prefix should be output as well.


IGNITE-9978 Implement Compound Naive Bayes classifier

Compound Naive Bayes over Gaussian and Discrete models.
To implement Compound Naive Bayes,  Gaussian and Discrete models were updated:

A method setFeatureIdsToSkip(Collection<Integer> featureIdsToSkip)  was added to Gaussian and Discrete trainers. The method accepts a collection with feature ids which should be skipped in a trainer.

A method double[] probabilityPowers(Vector vector) was added to Gaussian and Discrete models.  The method returns an array where the index is a label index and value is a probability power of being this label.

@zaleslaw @ybabak @avplatonov @dmitrievanthony could you take a look?

I will have a look this week, currently it has conflicts with master

@dspavlov @zaleslaw  Thank you for the reviewing.
I resolved conflicts, it was a formatting problem due to newline separators. I also formatted my code for the same style.

@avplatonov Thank you for the feedback.
I moved feature filtering to Compound Bayes.  Not sure if my approach is ok or you want a separate preprocessor?
Regarding vector-projection, I like the idea itself and if we need this structure I'll be happy to implement it.
If I need to enrich other Bayesian models with probabilityPowers method, does it make sense to create a separate interface for it? Something like CompoundBayesCompatibleModel and force people to implement this method in (probably) some other types of Bayesian algorithms.

Hi, @avplatonov ,
Thank you for the review.

I created a ticket IGNITE-12105 to implement vector projecting.

I extracted an interface, but I have a question. What do you think, shall the BayesModel extend IgniteModel<>?

@dehasi Thanks a lot!

Great, thank you.
It depends on whether we will add some Bayesian model, which will not be a model in the usual sense. Moreover, IgniteModel is a model that can be serialized and deserialized into well-known and controlled internal classes of Apache Ignite ML. So I think it makes sense to make this an child of IgniteModel.

@avplatonov ,
I made BayesModel child of IgniteModel.


Improve auth interceptor operation handling

Fixes #6258

I don't see a change to the behaviour in the AuthorizationInterceptor itself. I suppose the previous change in 7.4.0 caused the regression by un-intentionally revealing another bug because it eliminated usage of checking the contents of a response (Bundle) resource based on RequestDetails.
So it was like the decision was based on both request and response. And it looks like you made sure the authorization checks happen separately.
This is an interesting fix. Thank you for addressing it.

Any update on this? I see 1 test failed in the pipeline, but when I run that test locally it passes.

Apologies - Once this was merged, we saw a few downstream test failures, so I had to back this out while I try to figure out why.
Second attempt at merging this will be on #6382

Merging as this was reviewed as-is in #6278 (this was temporarily backed out due to a bad test in CDR)


Added CreateCollectionExceptions for ArangoSync

Scope & Purpose
We have made the createCollections api more strict. This has the side-effect that arangosync, which has to send some internals over this api, does not work for specific collections anymore.
With this PR we add some exceptions for internal attributes for arangosync.

[x] :hankey: Bugfix
[x] :pizza: New feature
[ ] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification

Checklist

[ ] Tests

[ ] Regression tests
[ ] C++ Unit tests
[ ] integration tests
[ ] resilience tests

[ ] :book: CHANGELOG entry made On purpose skipped, this is an unreleased bug-fix for a regression
[ ] :books: documentation written (release notes, API changes, ...)
[ ] Backports

[ ] Backport for 3.10: (Please link PR)
[ ] Backport for 3.9: (Please link PR)
[ ] Backport for 3.8: (Please link PR)

Related Information
(Please reference tickets / specification / other PRs etc)

[ ] Docs PR:
[x] Enterprise PR: https://github.com/arangodb/enterprise/pull/1212
[ ] GitHub issue / Jira ticket:
[ ] Design document:

The red Jenkins run is a sporadic test failure.


Add preconfigured_waf_config block will be added to the module?

Hi,
Is there a plan to add preconfigured_waf_config block to the module?

Hi @imrannayer,
I would appreciate any info related to this request. Is it will be implemented? If so, do you know any terms?

@imrannayer from my point of view the multiple exclusion blocks are not needed. I used multiple request_header, request_cookie, request_uri and request_query_param in a single exclusion block

@maksymsereda will the operator be unique in repeated request_header block? Is it possible to have something like this?
      request_cookie {
          operator = "STARTS_WITH"
          value    = "xyz"
      }
      request_cookie {
          operator = "STARTS_WITH"
          value    = "abc"
      }

@imrannayer hm... not sure, IMHO it should be one unique request_cookie per exclusion block

@maksymsereda can you check example in #34 if it looks fine?

@imrannayer yes, as for me that fulfill the requirements

@maksymsereda code is merged to main repo. It will be while before 1.0 will be released. In the meantime you can point your code directly to git.
I coded to allow multiple block with same operator. See example


Add artifacthub-repo.yml file with initial list of owners

Is this list the maintainers? The project manager? Other?

Is this list the maintainers? The project manager? Other?

This is just the list of people who can edit the entry in ArtifactHub (not the helm chart itself -- just the reference to it). I would be happy to add you, but you have to make your email address public.

Is this list the maintainers? The project manager? Other?

Artifact Hub admins. Only required to attest the repo ownership.


Try to add invite only method

Hi brother! I like commun app concept. Really good idea but my suggestion. Can you add invited users only can join in app or can post in app? Because you planned to help users to earn money via this app right? So unwanted users will come and will post spam so if we added invite only option it will make curiosity to use commun app  and also can avoid spam posts. Invite only method ->  https://github.com/fireship-io/invite-only-phone-auth
Just my suggestion, don't mind

Yes, it makes sense to restrict users to posting spams. To avoid this I am gonna add some access level, restrictions and permissions to avoid this and can be changed by admin or moderator. While creating community admin/moderator can set access level like who can post or wether community is a open for everyone or user can join by invitation only.

Nice.. all the best


chore: performance and readability improvement

There is no point in iterating the list twice.
I also reverted the ifs and used pattern matching.
You can close this PR if you don't find it useful, but I had to debug this code and had to make it more readable for me, so I decided to post it now that I have these changes.

Thanks @marekm294 however I’m afraid that we can’t accept pull request with such drastic changes - frankly it’s impossible to tell at the moment where the code is changed and where only the formatting.


JsonLdError now inherits from StandardError instead of Exception

Signed-off-by: Aymeric Brisse<EMAIL_ADDRESS>

Coverage remained the same at 88.522% when pulling 1aa2cfb70708618863a7581f09f5b36e7510a378 on PerfectMemory:standarderror into 7ef20b95f2f570c7d87d2705e23a829b37050d61 on ruby-rdf:develop.

Coverage remained the same at 88.522% when pulling 1aa2cfb70708618863a7581f09f5b36e7510a378 on PerfectMemory:standarderror into 7ef20b95f2f570c7d87d2705e23a829b37050d61 on ruby-rdf:develop.

This seems reasonable, but what's the motivation?

StandardError can be catched, Exception should not (see http://blog.honeybadger.io/ruby-exception-vs-standarderror-whats-the-difference/).
Sometimes you need a catch-all errors and want to use a begin ... rescue StandardError, which won't catch the JsonLdError.

I'm working on some other things as well, I should have a new release out soon including this.


Use Skia's drawAtlas now that we've rolled to a newer Skia

Roll was ff8bbe4e1674ae57f2ea3a2841a37a9c099beac8
This is another step in fixing #138
<EMAIL_ADDRESS>

lgtm


Permission issue with second Grav installation on single server

I have installed Grav without an issue for domain A, but for domain B, doing the same does not work.
I get HTTP500 error in the browser and nginx log says: PHP message: PHP Fatal error:  Uncaught RuntimeException: Opening file for writing failed on error  in /var/www/DOMAIN.com/vendor/rockettheme/toolbox/File/src/File.php:198.
Seems like a permission issue, but everything inside Grav installation folder is owned by www-data (same as my first domain).
What can be wrong?

Ok. Turns out some folders were created with root user as owner, after I changed the permissions. Re-applying chown command on the whole directory fixed the issue.


Add support for Gatsby v4

Hi @lukethacoder, Thank you for bringing this update to our attention! We made the change in another PR with the other necessary change and will release it soon.
Thanks again!


For Visual Studio Code setting.

Sorry, poor English.
I ask How to change color setting of Python commnet block area text color.
Copilot reply normal answer, again and again. (or not good my question.)
For beginner's me, VScode setting is deep like a programming too. So, please help for VScode-self.
Of course, I wrong use copilot.
By the way, I resolved with normal internet search.
Thank you for Have a good flight.

Feel free to give /vscode a shot, next time! It's specialized towards answering questions about VS Code. Glad you figured this one out 👍


@master branch timeout behind proxy

I'm getting a timeout when running the
Gamesight/slack-workflow-status@master action
Some other IPs that are erroring out:
<IP_ADDRESS>:443
<IP_ADDRESS>:443
<IP_ADDRESS>:443
<IP_ADDRESS>:443
The action WORKS when I change it from
Gamesight/slack-workflow-status**@master**
to
Gamesight/slack-workflow-status**@v1**
Also, when the action ran with "@master" on 12/1 it was still working. Sometime between 12/2 and 12/13 it started getting the timeout.
I should mention that the environment this action is running on is behind a proxy, but the proxy itself hasn't changed recently to the best of my knowledge.
For now I will just use @v1, but am interesting in knowing what changed/broke.

Biggest change was replacing the request library with slack's webhook package. I am wondering if that isn't playing nice with your proxy for some reason.


findAll([]) leads to unexpected condition

If you query Model::findAll([]) with empty condition I get WHERE 0=1. To be honest I did not expect this result. What is the idea behind this?

this is because an empty array results in an IN condition with an empty set, which is equal to false.
WHERE 0=1 is the database agnostic representation of WHERE false.


Kt add swagger ui autodocs

Marked as ready for review so it doesn't get pulled in until we've had a chance to discuss.


[CT-641] [Feature] DBT Continuous running

Is this your first time opening an issue?

[X] I have read the expectations for open source contributors

Describe the Feature
Run DBT migrations in a continuous loop with a sleep from commane line. For example, dbt run --daemon --sleep 5m, would run DBT, sleep for 5 min and loop.
Describe alternatives you've considered
Writing a loop myself
This is fairly easy from command line, but inside DBT would offer better ability for error handling.
Who will this benefit?
People running DBT as a prod data pipeline engine
Are you interested in contributing this feature?
Yes
Anything else?
No response

Hey @aodhan-domhnaill, thanks for opening!
I have two primary reservations with an idea like that:

dbt's execution model is a DAG. It only proceeds in one direction, not in a loop or cycle. Of course, you run that DAG multiple times per day (or every 5 minutes), but each standalone invocation is still directed and acyclic.
Is your entire dbt invocation (batch process) really <5 minutes? If you do have models that need <5 minute latency, there are other solutions like:

lambda views (models that are "partitioned" between incremental processing + view)
materialized views
a dedicated streaming databases like Materialize

This is fairly easy from command line, but inside dbt would offer better ability for error handling.

Given how easy this is to spin up with a simple cron runner—knowing that you're taking matters into your own hands—I'm not sure that there's an abstraction missing inside dbt today to make it possible.
Instead, I'm curious to know more about: What kind of error handling are you looking for? dbt may already offer support for it, via structured logging and metadata-powered selection
I'm going to close this issue, as I don't foresee us taking on this work, or merging a PR for it into dbt-core. That doesn't mean you couldn't work on it, though! If  dbt run --daemon --sleep 5m is indeed something you want to build, and you want to share with the community of open source users, I'd welcome you to do it.


macOS linker error, MACOSX_DEPLOYMENT_TARGET needs updating.

I am currently trying to compile OpenBlas on macOS (10.13.4) with Xcode 9.3.1:
an:OpenBLAS-0.2.20 anz$ clang --version
Apple LLVM version 9.1.0 (clang-9<IP_ADDRESS>)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
an:OpenBLAS-0.2.20 anz$ gfortran --version
GNU Fortran (GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I tried to build out of the box by just invoking make - it didn't work. I then tried to copy the travisCI config for a build: make QUIET_MAKE=1 DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32 BINARY=64 INTERFACE64=1. That didn't work either. The error code was:
[INFO] : TIMER value: INT_ETIME (given by make.inc)
[INFO] : TIMER value: INT_ETIME (given by make.inc)
ld: library not found for -lcrt1.10.6.o
ld: library not found for -lcrt1.10.6.o
collect2: error: ld returned 1 exit status
collect2: error: ld returned 1 exit status
make[2]: *** [testslamch] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [testlsame] Error 1
ld: library not found for -lcrt1.10.6.o
collect2: error: ld returned 1 exit status
make[2]: *** [testdlamch] Error 1
ld: library not found for -lcrt1.10.6.o
collect2: error: ld returned 1 exit status
make[2]: *** [testieee] Error 1
ld: library not found for -lcrt1.10.6.o
collect2: error: ld returned 1 exit status
make[2]: *** [testversion] Error 1
ld: library not found for -lcrt1.10.6.o
collect2: error: ld returned 1 exit status
ld: library not found for -lcrt1.10.6.o
make[2]: *** [testdsecnd] Error 1
collect2: error: ld returned 1 exit status
make[2]: *** [testsecond] Error 1
make[1]: *** [lapack_install] Error 2
make: *** [netlib] Error 2

However, I got the library to successfully build by changing Makefile.system, L239, to:
export MACOSX_DEPLOYMENT_TARGET=10.9

You need to install 10.6 runtimes in xcode providing that library.
If you dont care about compatibility with current OSX releases you can safely remove line 239 and compile for current machine.

It's clearer how to compile on macOS now. However, I'd be interested to know why the flag gets set at all. For example, those compiling for their own machine wouldn't need to set it. Those compiling for old versions should presumably know enough about that kind of flag to know to set it.

Is it a way of advertising what macOS version the library should be compatible to?
As it is the library didn't compile out of the box and it took a bit of ferreting around to get it to work.

Yes, this setting makes sure that the library will be compatible with the named version - probably useful for deploying to a mix of machine generations. This flag was already set (to 10.2 back then) in the original libGoto2 from around 2009 that OpenBLAS builds upon.

Calling for an opinion poll among those who use (or at least build) OpenBLAS on/for OSX - does the
deployment target need updating, or is staying at 10.6 and requiring installation of its files in current xcode the preferred solution ?

10.8 is still supported. Please check with your latest xcode how old SDK-s you can still add.

What do the people think who package OpenBLAS MacOS binaries for Julia, condaforge or macports ? @jakirkham  @staticfloat

Over in Julia-land, we use 10.8 as the minimum OSX version by default.  That seems to be a nice balance between features and compatibility.  It's difficult for us to estimate the distribution of user's computers, but our 10.8+ binaries do not meet with many complaints.  There were 1-2 users complaining that we had dropped 10.7- support when we first switched over a year or two ago, but that was it, and for as sizeable a community as we are, I think that means there really aren't that many people still on 10.7-.
The other consideration is automated testing; we've been bitten by upgrading something that then stops working on older CI bots, but all Travis builder versions are at 10.10+, so no worries there.
I would be totally fine with OpenBLAS moving to 10.8+.

What do the people think who package OpenBLAS MacOS binaries for Julia, condaforge or macports ?

Sorry to get here late, @martin-frbg.
We set macOS 10.9 as our minimum supported version for all binaries produced in conda-forge (including OpenBLAS). That's when clang was fully supported on macOS (as opposed to gcc used on macOS 10.6). So it is a pretty good minimum to pick.

Thanks. I have moved it to 10.8 now to let #1618 pass the CI tests.


Proposal to merge repositories

I have similar repository with updated icons: https://github.com/cyberalien/google-material-design-icons-updated
Both repositories have something that other repository doesn't, maybe do something like merging them?
Your repository has scripts for building fonts, which is what many people want. However many icons include bugs. Some icons have wrong dimensions, some have paths that ruin their look. Also some icons are missing that existed in version 3.
My repository has fixed icons that had bugs, added icons that existed in version 3 but are missing on material.io (and their variations for all 5 themes) and added few icons people requested. There is also script to generate PNG files that at least one person wanted.
So both repositories have things that are missing in other repository. Maybe somehow merge them?

Hey from the author of https://github.com/jossef/material-design-icons-iconfont
Joining the request, I'm in the favor of merging our work
<EMAIL_ADDRESS>

Awesome.
I suggest to create new project, with full access for all of us. Why project instead of repository? Because I suggest to split parts of it into several repositories. For project name I think "material-icons" fits well and its available (grabbed it, will invite if you are ok with it).
Why not fork old repository? Old official repository is a mess. There are too many files that aren't needed by vast majority of users, many duplicates. Also icons structure have changed since version 3 because each icon has 5 themes.
Formats that people want:

SVG
Font
PNG

With 5 themes for each icon and about 1000 icons, total number of icons is about 5k. That's a lot of files for one repository. Because of that I suggest to split icons into at least 2 repositories:

SVG + font. Those are most common formats people want.

PNG repository. Some people want PNG files. Problem is there are many size/color combinations, so for 5k icons it would be a lot of files. People who need PNG files are unlikely to be able to build files themselves, so simply giving them tools is not enough. Therefore it would be nice to have separate repository with PNG files and tools for building them without polluting main repository.

Additional repositories can be created for other formats, such as iOS imagesets or whatever other format people will request. Those repositories, just like PNG repository, will have build tools that will use main repository as dependency and build files from that.
Next issue is build tools and monitoring of material.io. Icons on material.io have issues. However at some point Google team might fix those issues or update icons. So there should be way to monitor material.io for changes. I'm not sure how to do it, my current script is rather messy, however I think it should be split from main repository.
Tools for building font can be in main repository because both font and SVG are there.
What do you think about this?

Forgot about two-tone icons.
There are bunch of two-tone icons among new icons. Problem is its not just two-tone theme, they are in all themes. For example, there are plenty of them in "editor" category for baseline theme, like this one: https://github.com/cyberalien/google-material-design-icons-updated/blob/master/svg/editor/baseline-border_color.svg
I don't know much about exporting to fonts, would I be correct in assuming that those icons will have to be fixed to not include opacity?

Hey @cyberalien, @jossef! I'm all up for using my code and research for something better, but I won't participate directly in it (most likely).
This project is just 2 simple scripts I made 4 months ago to experiment with icons a little and I uploaded it to GitHub only because

I kind of promised to do this.
I couldn't find similar projects so my project would be a good starting point for those who want to implement font generating in their own project.

It would be nice to participate in repos merging to create something better, but currently, all my free time is taken by several side projects that are very important to me. I definitely like the idea, though!
Despite the fact that I won't directly participate in it (most likely), I still can allocate several hours to answer some questions regarding font generating or maybe discuss some design choices.

RE: Monitoring changes on material.io
Splitting it to a separate repo is a good idea. The simplest parser + git would do it. Some maintainer has to run it once a month or so so it will redownload all the icons, and if there are any changes, git will notice that.
RE: Two-tone icons and fonts.
I think you're right and two-tone icons in other themes have to be manually edited before being used in a font, or you will get mess like this. I believe, removing semi-transparent parts and using outlines/tone-inverting would do it. So it would look like this:

But is this a good solution? The resulting icons won't be something Google created.
I don't think Two-tone themed icons should be converted to the font at all. If do what I proposed, it will basically become Outlined v2 with some icons having no difference. Like help/help_outline or hourglass/hourglass_full.

It would be cool if you guys combined your efforts to make this project a thing. In this case, I will archive my repo and put a link to your project.
This issue can also be used for coordination if you want it.

That approach to two-tone icons is a possible solution, but its also tricky:

There are icons like this one: https://github.com/cyberalien/google-material-design-icons-updated/blob/master/svg/device/baseline-signal_cellular_connected_no_internet_3_bar.svg

In such icons transparent part is too small to change it to outline.

Variations of those icons like this: https://github.com/cyberalien/google-material-design-icons-updated/blob/master/svg/device/round-signal_cellular_connected_no_internet_4_bar.svg

Its rounded. While changing baseline icon would be fine because there is two-tone icon that looks identical to original baseline, rounded icons don't have variations.
I have a different possible solution: split twotone icons into 2 glyphs (one for paths with opacity 1, one for paths with opacity 0.3) and use mix of :before and :after:
.material-icons { position: relative; }
.material-icons:after { position: absolute; left: 0; top: 0; right: 0; bottom: 0; opacity: .3; }

.material-icons.signal_cellular_connected_no_internet_4_bar:before { content: '\e540'; }
.material-icons.signal_cellular_connected_no_internet_4_bar:after { content: '\e541'; }

So that way 2 glyphs are displayed in place of one. What do you think about this approach?

Yeah, with this approach some icons do look weird.

Unfortunately, I'm not a web dev, so I can't give you my opinion on your solution. It sounds good 😄 My solution was based on assumption there can be only 1 font file for every theme, so desktop users could make use of it. But I don't know anything about who use Materials Icons and what it is used for in general. So how to go around it is totally up to you and @jossef.

@cyberalien

That's a lot of files for one repository
totaly agree, this was the original cause for me to create mdidx. as a developer it drove me nuts to clone the original project.

I don't know what will be the best practice and seems to split it to multiple repos sounds ok

svgs
iconfont + css (for dev needs i.e. npm install)
pngs
build scripts

@cyberalien

build tools and monitoring of material.io

Created a build script to scrape-out the new stuff Google is adding to the compiled font. downloaded with user-agent tricks straight from their CDN (Google Fonts)
https://github.com/jossef/material-design-icons-iconfont/blob/master/build/build.js

@cyberalien

about two-tone icons

fonts does not support more than one color. we can work this around by layering 2 characters with different colors overlay one another or embed the svg (can be done in css)

@Azumgi

Some maintainer has to run it once a month or so so it will redownload all the icons

fully/partially automating this and host this somewere to run periodically

In general, Google's designers doing good job. I'm in the favor of sticking to the "original spec" as possible and accessing their awesome work. there are many projects that add custom Icons such as https://materialdesignicons.com/ and they are a mess IMHO
I have small amount of time during weekends. let's schedule a kick-off chat privately
<EMAIL_ADDRESS>

Yes, I agree about "original spec". In next few days I'll try to test how to implement two-tone icons in font by layering 2 characters. I hope it will work 🙏

It seems to work: https://cyberalien.github.io/font-test/tests/sample1.html
One font, using :before pseudo-element with .3 opacity for semi-transparent part of icon, using :after pseudo-element with 1 opacity for normal part of icon.

In addition to previous post, I've tried making ligatures work, so font could use same syntax as old font, but it is impossible.
So looks like code like this won't work:
battery_charging_full

I tried mixing ligatures as different layers (such as "battery_charging" as first part, "_full" as second part), but then its impossible to target one part of ligature to position it near first part. :first-letter targets actual first letter, not ligature.
So I think it will have to be done like in other glyph fonts (and in sample I've posted above): big css file will have to be included and icon name passed as attribute or class name:

or

In addition to previous post, I've tried making ligatures work, so font could use same syntax as old font, but it is impossible.
So looks like code like this won't work:
battery_charging_full

I tried mixing ligatures as different layers (such as "battery_charging" as first part, "_full" as second part), but then its impossible to target one part of ligature to position it near first part. :first-letter targets actual first letter, not ligature.
So I think it will have to be done like in other glyph fonts (and in sample I've posted above): big css file will have to be included and icon name passed as attribute or class name:

or

@cyberalien
it's possible, google used in their compiled font only the first letter of the ligature as the key and the rest is the mapping
e.g.
b->attery
b -> attery_full

Problem with that is there is a very limited number of first letters.
For example: singular_cellular_1_bar, signal_cellular_connected_no_internet_0_bar, signal_wifi_1_bar_lock have completely different layers, but all of them same first letter "s". So splitting "s" and the rest of ligature would conflict because there can be only one letter "s" in font.

Closing this because discussion was moved to https://github.com/material-icons/build/issues
@Azumgi you've posted that you most likely won't be participating, but if you change your mind, you are always welcome to join us.


Add support for in-line analysis notebook functions

SQL Operations Studio Version: 0.30.6 (Windows 10)

Feature Request: Operations Studio has become my go-to daily platform for query and analysis work.  With the increasing availability of SQL notebook style apps (SQL Notebook, Jupyter, HUE) which allow for combined analysis notes and in-line queries and results, it's tempting to switch but I am reluctant to give up the simplicity and directness of the connection methods in Operations Studio.  I'd love to see support for inline notebooks in Ops Studio in some form.
This may be possible via an extension which would parse query text and create a reader-friendly copy in a separate window, including code blocks of query text or results as desired.  Perhaps in future versions this type of function could be built in.

@pnhughes is this a request for SQL Notebook support, or just Notebook integration? We've shipped basic Notebook support as part of the SQL Server 2019 (preview) extension, and have SQL support on our roadmap as a built-in feature with no need for Jupyter. We'd love to hear what your top requested features are, issues etc.

SQL Notebook support has been added since this issue was created. Please try it out and give us feedback!


Elasticache Snapshot Support

Is your feature request related to a problem?
Enable Snapshot support from ACK service controller for Amazon ElastiCache
Describe the solution you'd like
A description of what you want to happen.
Describe alternatives you've considered
A description of any alternative solutions or features you've considered.

Resource manager code merged. Still needs e2e tests added.


[gql_dio_link]  null safety

WIP: Some tests are failing,,,

Closed in favor of https://github.com/gql-dart/gql/pull/203


Use sampling to improve speed in estimate of continuous/discrete binning

For
p = Gadfly.plot(x=randn(10^6), Gadfly.Geom.histogram(bincount=100));

Master:
julia> @time render(p);
  1.911688 seconds (15.05 M allocations: 357.836 MB, 11.58% gc time)

This PR:
julia> @time render(p);
  0.215660 seconds (4.05 M allocations: 70.582 MB, 11.79% gc time)

There's still more than can be done, but I have to go on to other things now.
(Remaining bottleneck is in applying the scales due to ::Function in ContinuousScaleTransform. How do you feel about FastAnonymous.jl?)

Travis failure is due to needing a new tagged Hexagons, see https://github.com/dcjones/Hexagons.jl/issues/4#issuecomment-133226148.

Excellent! Merged. (https://github.com/dcjones/Gadfly.jl/commit/6ac00aa2655b2188767e58874b26973a2c9d75c2)


Benchmark against Pillow-simd

Pillow SIMD purports to be a 2x boost in performance over Pillow for resizing, which would be a significant performance boon for us.

Done.  2x might be a little overstatement in our case.  But we did get an extra 10% render speed out of Dirpy with Pillow-SIMD with no visible drawbacks, so it's definitely a Good Thing.  Adding it as a recommendation in the benchmarks and README docs.


Folder aliases broken with the Maildir backend

Discussed in https://github.com/pimalaya/himalaya/discussions/519

Originally posted by grimnight December 10, 2024
I just installed Himalaya to try it out. I have been trying to use folder aliases, but I can't get them to work. Am I doing something wrong or have I misunderstood folder aliases?
Excerpt from my config (sanitized):
[accounts.account_name]
default = true
email = "grimnight@email"

display-name = "GrimNight"
backend.type = "maildir"
backend.root-dir = "~/.local/share/mail/grimnight/"
backend.maildirpp = false
message.send.backend.type = "sendmail"
message.send.backend.cmd = "/usr/sbin/sendmail"

folder.alias.inbox = "INBOX"
folder.alias.old = "Archives"

And my attempts:
~
❯ himalaya envelope list -f old
Error:
   0: cannot find maildir matching name old

Note: Run with --debug to enable logs with spantrace.
Note: Run with --trace to enable verbose logs with backtrace.

~
❯ himalaya envelope list -f inbox
Error:
   0: cannot find maildir matching name inbox

Note: Run with --debug to enable logs with spantrace.
Note: Run with --trace to enable verbose logs with backtrace.

The folder aliases don't seem to work, unless I have misunderstood them.
Both himalaya envelope list and himalaya envelope list -f INBOX work fine.

I am not even using maildir and have the same issue with aliases.

Good news: it was a mistake in the documentation. It should be aliases instead of alias:
folder.aliases.inbox = "INBOX"
folder.aliases.old = "Archives"


Cypress Testing v12.8.1 - Notebooks fully working

Description
[Describe what this change achieves]
Fixed all of the testing in notebooks.
Greatly improved speed removing unnecessary waits.
Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] New functionality includes testing.

[ ] All tests pass, including unit test, integration test and doctest

[ ] New functionality has been documented.

[ ] New functionality has javadoc added
[ ] New functionality has user manual doc added

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

All 36 test passing.


"Jumper" feature

Hey there, can you add the jumper feature found in this mod? I've always found it to be really useful without breaking the game too much.

Maybe this mod does that.

I'm not sure I'm able to do that, but why would I add it if there is already one mod which does that?

Yeah, I didn't know about that mod when I made this Issue, the one I said work as intended, thank you for your response!


Should operations of 2 colors be instance methods?

There are several operations that do not operate on a single color but on two colors. These include:

Interpolation: mix(), range(), steps()
All the DeltaE methods
distance()
contrast()
Alpha blending (once we have it)

I often find myself using these as static methods anyway, just because there's no reason to do e.g. color1.mix(color2) over color2.mix(color1). So perhaps we should make Color objects even lighter and only have them as static methods?
Except equals(), I think that should stay.

I prefer the static methods too.
Note that deltaECMC (and 94, which we don't implement) give different results if sample and reference are swapped.

I would expose them as separate exported functions rather than putting them on the class. This way, the tree shaking will remove them if they are not used.

This is only about the OO API. The tree-shakeable, procedural API doesn't have any instance methods anyway.

Note that deltaECMC (and 94, which we don't implement) give different results if sample and reference are swapped.

contrastAPCA also gives different results if foreground and text colors are swapped

Not sure if that should be a sufficient reason to have them as instance methods. In the static method, the arguments are still ordered…

To me, the case where the order of arguments is important is precisely the case where instance methods are a bad fit (unless the name of the method itself indicates the role of the instance, but this will likely lead to weird names).


Saved digimemory freezes the game

Not exactly freeze it, but whenever you enter digimemory with a saved digimon, game starts working pretty badly and it wont let you save the game, it keeps loading and loading, models doesnt load either on either email or digimemory.
Also, summoning doesnt work properly, when pressing summon button, game freezes, music running, animations running, everything good, but it stays still there and doesnt do anything

That sounds like the ROM extraction or rebuild failed somewhere. Could you try rebuilding the ROM from a fresh dump of the original game?
If it keeps happening, could you please export the randomization settings you used?

it was the rebuilding, yeah
working fine now, except for the save file that even the new ROM cant load properly, keeps crashing as usual


build: allow using subproject for wlroots

This is handy when testing cage with a newer wlroots copy, or
when developing cage and wlroots patches in parallel.

Thanks!


ModuleNotFoundError: No module named 'pkg_resources'

I Installed python 3.12.5 then verified it with python --version
then i ran:
python -m pip install --user pipx
python -m pipx ensurepath
pipx --version
after this i ran pipx install game-extraction-toolbox
but when i used gextoolbox version i got this:
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "c:\users\oikon.local\bin\gextoolbox.exe_main.py", line 4, in
File "C:\Users\Oikon\pipx\venvs\game-extraction-toolbox\Lib\site-packages\gex\toolbox.py", line 10, in
from gex.commands.version import version
File "C:\Users\Oikon\pipx\venvs\game-extraction-toolbox\Lib\site-packages\gex\commands\version.py", line 2, in
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
what am I supposed to do to fix it?

Im sure someone faced this in the past...

LOL I FORGOT IT DOESNT WORK WITH 3.12 LOLLLLLL


[edpm_nova]Use FQDN as sevice hostname

The greenfield deployment sets up host FQDN via IPAM but did not change
the /etc/hostname to FQDN. This causes that libvirt will see and use
FQDN for the node names, but nova-compute uses the sort hostname
returned by socket.gethostname().
In greenfield it causes that the nova-compute host name is different
form the compute nodename. Nova works with this setup, but it will cause
confusion for the users coming from older versions where both names are
FQDN.
During adoption, when the adopted cloud does not have FQDN in the
/etc/hostname, the compute service host name will change as in 18 we are
not yet hardcoding the FQDN in the nova.conf. This results in failed
adoption.
This commit ensures the [DEFAULT]host is set to the FQDN.
Fixes: OSPRH-5197

/hold We need to do the same for the networking EDPM services as well to make sure nova and neturon will talk about the same compute node with the same name

The greenfield deployment sets up host FQDN via IPAM but did not change
the /etc/hostname to FQDN

am not sure this is accurate, assuming non pre-provisioned scenarios, @rabi WDYT?

the ceilometer kolla config does not copy the new host specific config in place:
https://logserver.rdoproject.org/87/587/f45295cc4e5ec7ef1c3b19a25adf18b7e2b5c2e0/github-check/cifmw-crc-podified-edpm-baremetal/e340de1/ci-framework-data/logs/<IP_ADDRESS>/openstack/config/ceilometer/ceilometer-agent-compute.json

The greenfield deployment sets up host FQDN via IPAM but did not change
the /etc/hostname to FQDN

am not sure this is accurate, assuming non pre-provisioned scenarios, @rabi WDYT?

I don't understand why there is suddenly a requirement that /etc/hostname should have fqdn. AFAIK, this was never been the case with TripleO.  Also, yes this is not accurate for non pre-provisioned scenarios, /etc/hostname would be set with fqdn is domainName has been provided in baremetalSetTemplate[1].
[1] https://github.com/openstack-k8s-operators/openstack-baremetal-operator/blob/main/templates/openstackbaremetalset/cloudinit/userdata#L3

/retest

The edpm_nova commit is complete know, I need to do similar logic to the neutron and telemetry services as well

After today slack discussion we agreed not to directly rely on the old service host configuration to generate the new service host config as the old config will not be available during later deployment. Instead we will only rely on the old config during adoption to check if the generated new config matches with the old config. If there is a mismatch then we fail the adoption to force the human to create an NodeSet  configuration that results in a match.  This allow us that after adoption only rely on the NodeSet as the source of truth for later config regeneration.

I will split this PR to two. The current one will make sure that we have FQDN in the service configs in greenfield. Then a separate PR will introduce a edpm_preadoption_validation role and playbook (and a dataplane service in dataplane-operator) that will handle the adoption case

check-rdo  it looks like a much of the molecule tests did not run in zuul nor did podified-multinode-edpm-deployment-crc so lets get some fresh results

rebased to resolve merge conflict

Deployed with this change locally:
Ceilometer looks good
[root@edpm-compute-0 ~]# journalctl | grep ceilometer_agent_compute | grep edpm-compute-0.ctlplane.example.com
Mar 18 13:31:44 edpm-compute-0 ceilometer_agent_compute[105605]: 2024-03-18 13:31:44.990 2 DEBUG cotyledon.oslo_config_glue [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
Mar 18 13:31:45 edpm-compute-0 ceilometer_agent_compute[105605]: 2024-03-18 13:31:45.084 9 DEBUG cotyledon.oslo_config_glue [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
Mar 18 13:31:55 edpm-compute-0 ceilometer_agent_compute[107335]: 2024-03-18 13:31:55.385 2 DEBUG cotyledon.oslo_config_glue [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
Mar 18 13:31:55 edpm-compute-0 ceilometer_agent_compute[107335]: 2024-03-18 13:31:55.465 9 DEBUG cotyledon.oslo_config_glue [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
[root@edpm-compute-0 ~]#

nova looks good:
❯ openstack compute service list
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
| ID                                   | Binary         | Host                                | Zone     | Status  | State | Updated At                 |
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
| af393c39-7002-4e3e-9b49-eaf67db32f29 | nova-conductor | nova-cell0-conductor-0              | internal | enabled | up    | 2024-03-18T15:12:05.000000 |
| 454f9a69-de0f-43b0-860b-9396ce111abe | nova-scheduler | nova-scheduler-0                    | internal | enabled | up    | 2024-03-18T15:12:06.000000 |
| 9bc717ed-e369-4f9e-b66e-b64a3d60afbc | nova-conductor | nova-cell1-conductor-0              | internal | enabled | up    | 2024-03-18T15:12:03.000000 |
| 81b8e4aa-a29a-4c04-8b58-469d94219317 | nova-compute   | edpm-compute-0.ctlplane.example.com | nova     | enabled | up    | 2024-03-18T15:12:08.000000 |
| a502d5c4-de6c-45c1-b1c8-1f0f39f75b9e | nova-compute   | edpm-compute-1.ctlplane.example.com | nova     | enabled | up    | 2024-03-18T15:12:08.000000 |
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
❯ openstack hypervisor list
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+
| ID                                   | Hypervisor Hostname                 | Hypervisor Type | Host IP         | State |
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+
| dc0dbb72-47de-490b-b15c-86da6db2421f | edpm-compute-0.ctlplane.example.com | QEMU            | <IP_ADDRESS> | up    |
| da8765cf-6df3-4576-939a-5629c50455ff | edpm-compute-1.ctlplane.example.com | QEMU            | <IP_ADDRESS> | up    |
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+

The neutron side does not look that good. No FQDNs there yet:
❯ openstack network agent list
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| ID                                   | Agent Type                   | Host               | Availability Zone | Alive | State | Binary                     |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| 6fac835f-d5c2-4cbe-ab0c-ec8fdc06c0ee | OVN Controller Gateway agent | crc-97g8f-master-0 |                   | :-)   | UP    | ovn-controller             |
| 47f366e7-c4d0-41d7-b38e-b5c6325d38de | OVN Controller agent         | edpm-compute-0     |                   | :-)   | UP    | ovn-controller             |
| 3400ce97-6f19-466e-bf63-b2800101a843 | OVN Controller agent         | edpm-compute-1     |                   | :-)   | UP    | ovn-controller             |
| adab4a10-f8d3-500f-9fd9-7b99a9fa128d | OVN Metadata agent           | edpm-compute-0     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
| b1ba3cad-1346-5ee0-af04-f56805e9ed39 | OVN Metadata agent           | edpm-compute-1     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+

The neutron side does not look that good. No FQDNs there yet:
❯ openstack network agent list
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| ID                                   | Agent Type                   | Host               | Availability Zone | Alive | State | Binary                     |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| 6fac835f-d5c2-4cbe-ab0c-ec8fdc06c0ee | OVN Controller Gateway agent | crc-97g8f-master-0 |                   | :-)   | UP    | ovn-controller             |
| 47f366e7-c4d0-41d7-b38e-b5c6325d38de | OVN Controller agent         | edpm-compute-0     |                   | :-)   | UP    | ovn-controller             |
| 3400ce97-6f19-466e-bf63-b2800101a843 | OVN Controller agent         | edpm-compute-1     |                   | :-)   | UP    | ovn-controller             |
| adab4a10-f8d3-500f-9fd9-7b99a9fa128d | OVN Metadata agent           | edpm-compute-0     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
| b1ba3cad-1346-5ee0-af04-f56805e9ed39 | OVN Metadata agent           | edpm-compute-1     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+

And due to the hostname mismatch VMs cannot be booted with networking:
| fault                               | {'code': 500, 'created': '2024-03-18T15:24:31Z', 'message': 'Build of instance 2fcaf735-1121-446f-8dda-6bae9bb2a982 aborted: Failed to allocate the network(s), not rescheduling.', 'details': 'Traceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 7726, in _create_guest_with_network\n    guest = self._create_guest(\n  File "/usr/lib64/python3.9/contextlib.py", line 126, in __exit__\n    next(self.gen)\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 559, in wait_for_instance_event\n    self._wait_for_instance_events(\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 471, in _wait_for_instance_events\n    actual_event = event.wait()\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 436, in wait\n    instance_event = self.event.wait()\n  File "/usr/lib/python3.9/site-packages/eventlet/event.py", line 125, in wait\n    result = hub.switch()\n  File "/usr/lib/python3.9/site-packages/eventlet/hubs/hub.py", line 313, in switch\n    return self.greenlet.switch()\neventlet.timeout.Timeout: 300 seconds\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2611, in _build_and_run_instance\n    self.driver.spawn(context, instance, image_meta,\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 4387, in spawn\n    self._create_guest_with_network(\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 7744, in _create_guest_with_network\n    raise exception.VirtualInterfaceCreateException()\nnova.exception.VirtualInterfaceCreateException: Virtual Interface creation failed\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2426, in _do_build_and_run_instance\n    self._build_and_run_instance(context, instance, image,\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2675, in _build_and_run_instance\n    raise exception.BuildAbortException(instance_uuid=instance.uuid,\nnova.exception.BuildAbortException: Build of instance 2fcaf735-1121-446f-8dda-6bae9bb2a982 aborted: Failed to allocate the network(s), not rescheduling.\n'} |

I don't get it. The metadata agent logs:
2024-03-18 13:28:53.350 61080 DEBUG neutron.agent.ovn.metadata_agent [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602

The neutron side does not look that good. No FQDNs there yet:
❯ openstack network agent list
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| ID                                   | Agent Type                   | Host               | Availability Zone | Alive | State | Binary                     |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+
| 6fac835f-d5c2-4cbe-ab0c-ec8fdc06c0ee | OVN Controller Gateway agent | crc-97g8f-master-0 |                   | :-)   | UP    | ovn-controller             |
| 47f366e7-c4d0-41d7-b38e-b5c6325d38de | OVN Controller agent         | edpm-compute-0     |                   | :-)   | UP    | ovn-controller             |
| 3400ce97-6f19-466e-bf63-b2800101a843 | OVN Controller agent         | edpm-compute-1     |                   | :-)   | UP    | ovn-controller             |
| adab4a10-f8d3-500f-9fd9-7b99a9fa128d | OVN Metadata agent           | edpm-compute-0     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
| b1ba3cad-1346-5ee0-af04-f56805e9ed39 | OVN Metadata agent           | edpm-compute-1     |                   | :-)   | UP    | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+--------------------+-------------------+-------+-------+----------------------------+

And due to the hostname mismatch VMs cannot be booted with networking:
| fault                               | {'code': 500, 'created': '2024-03-18T15:24:31Z', 'message': 'Build of instance 2fcaf735-1121-446f-8dda-6bae9bb2a982 aborted: Failed to allocate the network(s), not rescheduling.', 'details': 'Traceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 7726, in _create_guest_with_network\n    guest = self._create_guest(\n  File "/usr/lib64/python3.9/contextlib.py", line 126, in __exit__\n    next(self.gen)\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 559, in wait_for_instance_event\n    self._wait_for_instance_events(\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 471, in _wait_for_instance_events\n    actual_event = event.wait()\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 436, in wait\n    instance_event = self.event.wait()\n  File "/usr/lib/python3.9/site-packages/eventlet/event.py", line 125, in wait\n    result = hub.switch()\n  File "/usr/lib/python3.9/site-packages/eventlet/hubs/hub.py", line 313, in switch\n    return self.greenlet.switch()\neventlet.timeout.Timeout: 300 seconds\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2611, in _build_and_run_instance\n    self.driver.spawn(context, instance, image_meta,\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 4387, in spawn\n    self._create_guest_with_network(\n  File "/usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py", line 7744, in _create_guest_with_network\n    raise exception.VirtualInterfaceCreateException()\nnova.exception.VirtualInterfaceCreateException: Virtual Interface creation failed\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2426, in _do_build_and_run_instance\n    self._build_and_run_instance(context, instance, image,\n  File "/usr/lib/python3.9/site-packages/nova/compute/manager.py", line 2675, in _build_and_run_instance\n    raise exception.BuildAbortException(instance_uuid=instance.uuid,\nnova.exception.BuildAbortException: Build of instance 2fcaf735-1121-446f-8dda-6bae9bb2a982 aborted: Failed to allocate the network(s), not rescheduling.\n'} |

I don't get it. The metadata agent logs:
2024-03-18 13:28:53.350 61080 DEBUG neutron.agent.ovn.metadata_agent [-] host                           = edpm-compute-0.ctlplane.example.com log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602

I also see this in the ovs logs:
2024-03-18T15:19:29.876Z|00030|binding|INFO|Not claiming lport 30e11054-61c4-4675-8496-f1b8af25b751, chassis 47f366e7-c4d0-41d7-b38e-b5c6325d38de requested-chassis edpm-compute-0.ctlplane.example.com pb->chassis

probably related to the failed port binding

This was the missing piece https://github.com/openstack-k8s-operators/edpm-ansible/pull/587/files#diff-1d940036dd1db6ca86b5018b98ce175fd49bbfbeee588d807fd0c860ca27e2e4R73
Thanks @karelyatin for spotting it. Now the deployment uses FQDN by default and I can deploy a VM with networking as well and the metadata is accessible from the VM:
❯ openstack network agent list
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------+
| ID                                   | Agent Type                   | Host                                | Availability Zone | Alive | State | Binary         |
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------+
| 8572895b-5e47-426a-b6b1-021ac1a92ce9 | OVN Controller Gateway agent | crc-97g8f-master-0                  |                   | :-)   | UP    | ovn-controller |
| 34f77125-678a-441f-9dce-975fc4e61aa6 | OVN Controller agent         | edpm-compute-0.ctlplane.example.com |                   | :-)   | UP    | ovn-controller |
| ee782a33-7a67-4d6d-adab-e110bf1d1a20 | OVN Controller agent         | edpm-compute-1.ctlplane.example.com |                   | :-)   | UP    | ovn-controller |
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------+
❯ openstack network agent list
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------------------+
| ID                                   | Agent Type                   | Host                                | Availability Zone | Alive | State | Binary                     |
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------------------+
| 8572895b-5e47-426a-b6b1-021ac1a92ce9 | OVN Controller Gateway agent | crc-97g8f-master-0                  |                   | :-)   | UP    | ovn-controller             |
| 34f77125-678a-441f-9dce-975fc4e61aa6 | OVN Controller agent         | edpm-compute-0.ctlplane.example.com |                   | :-)   | UP    | ovn-controller             |
| ee782a33-7a67-4d6d-adab-e110bf1d1a20 | OVN Controller agent         | edpm-compute-1.ctlplane.example.com |                   | :-)   | UP    | ovn-controller             |
| a1b1a566-836c-5e0e-a70d-b76255b2ad9d | OVN Metadata agent           | edpm-compute-0.ctlplane.example.com |                   | :-)   | UP    | neutron-ovn-metadata-agent |
| 3c3cdd4f-e5e8-5ef6-8592-789c09c6547e | OVN Metadata agent           | edpm-compute-1.ctlplane.example.com |                   | :-)   | UP    | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+-------------------------------------+-------------------+-------+-------+----------------------------+
❯ openstack compute service list
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
| ID                                   | Binary         | Host                                | Zone     | Status  | State | Updated At                 |
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
| 6ef54b18-7c8c-46ff-a1ad-2517a8ba5ec2 | nova-conductor | nova-cell0-conductor-0              | internal | enabled | up    | 2024-03-19T10:43:12.000000 |
| a0327bef-0676-4faa-9a65-9d5a9c5c781e | nova-scheduler | nova-scheduler-0                    | internal | enabled | up    | 2024-03-19T10:43:08.000000 |
| 03c13dec-ab8c-45aa-885a-d1fd9fd69f54 | nova-conductor | nova-cell1-conductor-0              | internal | enabled | up    | 2024-03-19T10:43:05.000000 |
| 74c83103-4d18-4e76-b97f-32aef89d007f | nova-compute   | edpm-compute-0.ctlplane.example.com | nova     | enabled | up    | 2024-03-19T10:43:08.000000 |
| 00db4f4d-9a68-452f-a231-635ce98f4844 | nova-compute   | edpm-compute-1.ctlplane.example.com | nova     | enabled | up    | 2024-03-19T10:43:08.000000 |
+--------------------------------------+----------------+-------------------------------------+----------+---------+-------+----------------------------+
❯ openstack hypervisor list
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+
| ID                                   | Hypervisor Hostname                 | Hypervisor Type | Host IP         | State |
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+
| 781d917d-b68f-47ea-a36e-7ad82b0332c2 | edpm-compute-0.ctlplane.example.com | QEMU            | <IP_ADDRESS> | up    |
| 3b6a822a-f56c-4a70-9d76-3931d45bde2d | edpm-compute-1.ctlplane.example.com | QEMU            | <IP_ADDRESS> | up    |
+--------------------------------------+-------------------------------------+-----------------+-----------------+-------+
❯ openstack server list
+--------------------------------------+------+--------+----------------------------------------+--------+----------+
| ID                                   | Name | Status | Networks                               | Image  | Flavor   |
+--------------------------------------+------+--------+----------------------------------------+--------+----------+
| 9b9f5c5e-86ec-404a-ad44-720244cda63b | test | ACTIVE | private=<IP_ADDRESS>, <IP_ADDRESS> | cirros | m1.small |
+--------------------------------------+------+--------+----------------------------------------+--------+----------+
❯ ssh<EMAIL_ADDRESS><EMAIL_ADDRESS>password:
sh: /usr/bin/xauth: not found
$ curl http://<IP_ADDRESS>
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04

recheck

/hold wait for review form all the effected service owners

I dont see any issues from Telemetry point of view, this is lgtm for me

but did not change the /etc/hostname to FQDN

@gibizer   Though I've no issues with the change if  services are fine,  I was wondering why can't we change the hostNames in the OpenStackDataPlaneNodeSet spec  to fqdn when adopting (if that's the requirement). That would ensure /etc/hostname is fdqn and everything else would be fine(?).

but did not change the /etc/hostname to FQDN

@gibizer Though I've no issues with the change if services are fine, I was wondering why can't we change the hostNames in the OpenStackDataPlaneNodeSet spec to fqdn when adopting (if that's the requirement). That would ensure /etc/hostname is fdqn and everything else would be fine(?).

I see the following problematic cases:

adopting from a cloud where /etc/hostname is the shortname but the openstack services on the compute are configured with host=. I'm not sure that changing the content of /etc/hostname during adoption is safe as I don't know if other non-openstack services rely on the value.
deploying greenfield with pre-provisioned EDPM node where the pre-provisoning set the /etc/hostname to shortname. Do we allowed to override during greenfield the hostname of a pre-provisioned node?

Also as a sidenote, could you point me to the edpm_ansible code that sets /etc/hostname as I failed to found that in the past.

I'm not sure that changing the content of /etc/hostname during adoption is safe as I don't know if other non-openstack services rely on the value.

I don't know if there would be issues. My comment is based on your statement in the commit message that greenfield deployment sets up host FQDN via IPAM but did not change the /etc/hostname to FQDN

deploying greenfield with pre-provisioned EDPM node where the pre-provisoning set the /etc/hostname to shortname.

As for pre-provisioned nodes hostname/ctlplane ip has to be set before deployment as that happens during provisioning. It was never configured in TripleO either during deployment.

Also as a sidenote, could you point me to the edpm_ansible code that sets /etc/hostname as I failed to found that in the past.

As I mentioned above edpm-ansible does not change the hostname, you provide the hostname in the nodeset spec  (for both baremetal and preprovisioned nodes). For baremetal nodes it's configured with cloud-init[1] and for pre-provisioned it's always assumed to be already set like control plane IP.
[1] https://github.com/openstack-k8s-operators/openstack-baremetal-operator/blob/main/templates/openstackbaremetalset/cloudinit/userdata#L2

I'm not sure that changing the content of /etc/hostname during adoption is safe as I don't know if other non-openstack services rely on the value.

I don't know if there would be issues. My comment is based on your statement in the commit message that greenfield deployment sets up host FQDN via IPAM but did not change the /etc/hostname to FQDN

deploying greenfield with pre-provisioned EDPM node where the pre-provisoning set the /etc/hostname to shortname.

As for pre-provisioned nodes hostname/ctlplane ip has to be set before deployment as that happens during provisioning. It was never configured in TripleO either during deployment.

Also as a sidenote, could you point me to the edpm_ansible code that sets /etc/hostname as I failed to found that in the past.

As I mentioned above edpm-ansible does not change the hostname, you provide the hostname in the nodeset spec (for both baremetal and preprovisioned nodes). For baremetal nodes it's configured with cloud-init[1] and for pre-provisioned it's always assumed to be already set like control plane IP.
[1] https://github.com/openstack-k8s-operators/openstack-baremetal-operator/blob/main/templates/openstackbaremetalset/cloudinit/userdata#L2

I might misunderstood you but I thought you suggested above to override the content of /etc/hostnames . But now you say that we don't do that neither in 17 nor in 18 as we respect what was configured there by the tool did the provisioning. I agree with the latter.
Also if the old cloud has shortname in the /etc/hostname but fqdn in the service host config, then we have to reproduce the service host config otherwise the services would pick up the sortname after adoption.

I might misunderstood you but I thought you suggested above to override the content of /etc/hostnames

I think I've always questioned why /etc/hostname should have fqdn as it's something that's distribution specific.
I probably I mentioned to override /etc/hostname (if required) only during adoption before we deploy with edpm (kind of an assumption that it's done during provisioning, as the case be with greenfield). But as I said earlier , I'm fine with this PR if openstack services are fine with this approach (i.e with fqdn as host in service config) and there won't be any corner cases.

I might misunderstood you but I thought you suggested above to override the content of /etc/hostnames

I think I've always questioned why /etc/hostname should have fqdn as it's something that's distribution specific. I probably I mentioned to override /etc/hostname (if required) only during adoption before we deploy with edpm (kind of an assumption that it's done during provisioning, as the case be with greenfield). But as I said earlier , I'm fine with this PR if openstack services are fine with this approach (i.e with fqdn as host in service config) and there won't be any corner cases.

putting a fqdn in /etc/hostname is not just disto specific its against the freedesktop interop recommendations that state that file should not contained a . or domain name.
this pr is intentionally not modifying /etc/hostname
that was a option that was considered but instead we restricted it to modifying only the OpenStack config files to prevent any interop issues modifying /etc/hostname might cause say for hci deployments as an example.

https://www.freedesktop.org/software/systemd/man/latest/hostname.html
The file should contain a single newline-terminated hostname string. Comments (lines starting with a "#") are ignored. The hostname should be composed of up to 64 7-bit ASCII lower-case alphanumeric characters or hyphens forming a valid DNS domain name. It is recommended that this name contains only a single label, i.e. without any dots. Invalid characters will be filtered out in an attempt to make the name valid, but obviously it is recommended to use a valid name and not rely on this filtering.

that is the relevant text for those that are interested.

this looks good to me gibi im not sure why you have a hold on this currently so im going to approve and then review #604 and if we have concenus we can drop the hold and it will then merge.

more precisely the hold was there to get review form all affected services but that has happened so i think we can drop it but ill leave that to gibi

Need to resolve the conflict as #604 landed

/unhold
We have a full set of approvals.

tempest failed:
tempest.exceptions.BuildErrorException: Server 9a0287ae-b50f-43bd-896b-13e930eace63 failed to build and is in ERROR status
Details:  Request ID of server operation performed before checking the server status req-137a477f-d4e0-49d0-91b9-c1319147548e.

but form the compute log it seems the nova_compute container is restarted right after the VM is booted:
Mar 20 15:24:37 compute-0.ci-rdo.local nova_compute[213675]: 2024-03-20 15:24:37.285 2 INFO nova.virt.libvirt.driver [-] [instance: 9a0287ae-b50f-43bd-896b-13e930eace63] Instance spawned successfully.
Mar 20 15:24:37 compute-0.ci-rdo.local nova_compute[213675]: 2024-03-20 15:24:37.285 2 DEBUG nova.virt.libvirt.driver [None req-137a477f-d4e0-49d0-91b9-c1319147548e 7eabb0591c82420a9dbd30118d5fa68e 3077542fcfb742dd9f78323438f808f4 - - default default] [instance: 9a0287ae-b50f-43bd-896b-13e930eace63] Attempting to register defaults for the following image properties: ['hw_cdrom_bus', 'hw_disk_bus', 'hw_input_bus', 'hw_pointer_model', 'hw_video_model', 'hw_vif_model'] _register_undefined_instance_details /usr/lib/python3.9/site-packages/nova/virt/libvirt/driver.py:889
Mar 20 15:24:37 compute-0.ci-rdo.local nova_compute[213675]: 2024-03-20 15:24:37.302 2 WARNING amqp [-] Received method (60, 30) during closing channel 1.


largeaddressaware:no is not recommended for 64-bit apps

@TylerMSFT

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@TylerMSFT One case where this causes runtime failures is trying to run a non-large-address-aware x64 EXE on an ARM64 system. The emulation runtime tries to reserve a 4 GB region of VA space and fails, so the process doesn't even start.

That's an interesting scenario. What do you think about something like this, then:
Linking 64-bit applications with /LARGEADDRESSAWARE:NO is not recommended. It restricts the amount of available address space available to your app which can result in runtime failures if the app exhausts memory. It may also prevent x64 apps from running on ARM64 systems because the emulation runtime will try to reserve 4GB of virtual address space. If the app was linked with /LARGEADRESSAWARE:NO, the app won't launch because allocating that much address space will fail.
Awesome of you to update this page as a result of your experience!

#sign-off


Added link to Mastodon

📝 Summary
Added link to Mastodon
🔍 Description of Changes
Small change, adding a line in the list of online accounts to the Mastodon account created this year
📋 Checklist
I scanned the guidelines but this is not a code change. I have not run any tests. I truly hope this patch will not break any code :)

[ ] I have read the contributor guidelines.
[ ] For large changes, or changes that affect the public API: this change was discussed or approved through an issue, on Discord, or the community discussions (Please provide a link if applicable).
[ ] I have added tests for the changes made.
[ ] I have run the code and verified that it works as expected.

📜 Reviewers
@akshayka OR @mscolnick
PS. cool project!

You can sign the CLA by just posting a Pull Request Comment same as the below format.

To which document?
Anyway, my patch is available as CCZero. But if you decide to add the link yourself and not with my patch, I'd be happy too.


nixos/corerad: use passAsFile while converting settings JSON to TOML

Signed-off-by: Matt Layher<EMAIL_ADDRESS>
Motivation for this change
Handle a possible issue with single quoting in JSON by using passAsFile to convert JSON to TOML using an intermediary file. Reported by "clever" in #nixos-on-your-router.
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

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] 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.

/cc @Infinisil due to reviewing the previous PR: https://github.com/NixOS/nixpkgs/pull/89781, and @cleverca22 (I assume you are clever from IRC, but if not, apologies!)

@GrahamcOfBorg test corerad

I thought about this in the original PR, but didn't bother mentioning it :P (also since https://github.com/NixOS/nixpkgs/pull/75584 implements it correctly anyways, which would be used in the future).


Add boiler plate for new controller in PMO

We need a new controller to reconcile RemoteWrite CustomResources in prometheus-meta-operator.
Controllers are defined here https://github.com/giantswarm/prometheus-meta-operator/tree/master/service/controller
Add a new controller by re-using boiler plate from other controllers and omit the reconciled resource for now. We will add this later when we have it.
Controllers are then wired and started there, we can wire it to test but we should leave this out until the controller implementation is complete.

remotewrite controller implementation will be on this PR: https://github.com/giantswarm/prometheus-meta-operator/pull/905


Reorganise saving/loading logic

Just general refactoring work to make saving/loading better organised and also safer (in particular to prevent problems with a corrupted save). Prerequisite for the autosave feature.

I made a huge loading/saving refactor in the jam player area, and it appears to work correctly, in particular including the safe saving system. Hopefully no one will lose their entire Jam Player progress because of unfortunate writing interruption incident anymore.


Change Show Address add/change address to_bech32 functions

Closes #623  .
Pre-review checklist

[x] All code has been formatted using our config (make format for Purescript, nixpkgs-fmt for Nix)
[x] All Purescript imports are explicit, including constructors
[ ] All existing examples have been run locally against a fully-synced testnet node
[ ] The integration and unit tests have been run (npm run test) locally
[x] The changelog has been updated under the ## Unreleased header, using the appropriate sub-headings (### Added, ### Removed, ### Fixed)

Oops, sorry, please ignore the previous approve. I think if we can print addresses knowing the network id implicitly, could that be used for Show instead of the hexstring?

Yes

Mostly superseded by #849

Closing, we don't need this changes. Slightly related: https://github.com/Plutonomicon/cardano-transaction-lib/pull/849/files