Buyin + Alignment

We really should be getting buy-in and alignment on this critical business feature to deliver the most possible value before we move forward with our change management strategy.
💼

Amazing PR!!! Thank you, this was published in v1.1.18!


SDK v3 should support interface to be passed to InsertItemAsync/ReplaceItemAsync/UpsertItemAsync

Describe the bug
The scenario where the method InsertItemAsync / ReplaceItemAsync / UpsertItemAsync is called with an interface is working with the SDK v2 but not on the SDK v3.
It's a blocking point to work with a schemaless database and not being able to work with interfaces to insert/replace/upsert documents.
We could have a <T> being a List<ICompany> where each ICompany has a list of common properties & each concrete has dedicated properties to the current company.
    public interface ICompany
    {
        string Name { get; set; }
    }

    public class CompanyFoo : ICompany
    {
        public string Name { get; set; }
        public decimal FooValue { get; set; }
    }

    public class CompanyBar : ICompany
    {
        public string Name { get; set; }
        public string BarValue { get; set; }
    }

This is the stacktrace I had using the SDK v3 :
Message:
    Newtonsoft.Json.JsonSerializationException : Could not create an instance of type CosmosDbConnector.Tests.Dtos.ICompany. Type is an interface or abstract class and cannot be instantiated. Path 'Document[0].Name', line 1, position 21.
  Stack Trace:
    JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
    JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
    JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
    JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
    JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
    JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
    JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
    JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
    JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
    JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
    JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
    JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
    JsonSerializer.Deserialize(JsonReader reader, Type objectType)
    JsonSerializer.Deserialize[T](JsonReader reader)
    CosmosJsonDotNetSerializer.FromStream[T](Stream stream)
    CosmosJsonSerializerWrapper.FromStream[T](Stream stream)
    CosmosSerializerCore.FromStream[T](Stream stream)
    CosmosResponseFactory.ToObjectInternal[T](ResponseMessage responseMessage)
    CosmosResponseFactory.<CreateItemResponseAsync>b__5_0[T](ResponseMessage cosmosResponseMessage)
    CosmosResponseFactory.ProcessMessageAsync[T](Task`1 cosmosResponseTask, Func`2 createResponse)
    AzureCosmosDbV3Connector.CreateDocumentAsync[T](String databaseId, String collectionId, DocumentBase`1 item) line 77
    TestCosmosDbConnector.SampleTestV3() line 64
    --- End of stack trace from previous location where exception was thrown ---

To Reproduce
I created a repository with a sample usage using the SDK v2 & the SDK v3, it's available here :
https://github.com/YohanSciubukgian/CosmosDbConnector
Expected behavior
SDK v3 should support interface to be passed to generic type <T> while calling InsertItemAsync (like SDK v2)
Actual behavior
An Exception is being raised when InsertItemAsync is being called.
Environment summary
Azure Cosmos DB emulator : v2.9.2
Microsoft.Azure.Cosmos : v3.6.0
Microsoft.Azure.DocumentDB.Core : v2.10.1
OS Version: Windows
Additional context
I have added the Type declaration DocumentBase<T> on CreateItemAsync/ReplaceItemAsync/UpsertItemAsync method but the exception still occurs.
It looks like the type is redundant :

It looks like (from the stacktrace) that the SDK v3 is trying to create an object based on the generic type for the response.
I have added a break point before the Dispose(), on the UnitTests part, in order to analyze the CosmosDB (local emulator) behavior.
It looks like the document has been created properly on CosmosDB but the response cannot be processed by the SDK v3.

The problem is the serialization is based on the type you passed in. It's not possible to deserialize an interface. The concrete type has to be passed into the method. The reason this works in v2 is it's doing a lazy deserialization so you don't get the exception until you try to read the object which your project never does. This optimization should be done to v3, but if your really looking for performance you should use the stream APIs instead.
Solutions 1:
Pass the concrete type to the methods:
await _azureCosmosDbV2Connector.CreateDocumentAsync<CompanyBar>(DATABASE_ID_V2, collectionId, document);
Solution 2:
Use the stream APIs. Don't serialize the response. Need to create a serializer.
This will not throw exceptions for NotFound and other service side exceptions.
public async Task<bool> CreateDocumentAsync<T>(string databaseId, string collectionId, DocumentBase<T> item)
        {
            var container = _client.GetContainer(databaseId, collectionId);
            PartitionKey pk = new PartitionKey(item.key);
            Stream stream = serializer.ToStream<T>(item);
            using(var response = await container.CreateItemStreamAsync(pk, stream))
            {
                     return IsResponseValid(response.StatusCode);
            }
        }

Solution 3:
This has not been verified, but you can try passing dynamic.
       public async Task<bool> CreateDocumentAsync<T>(string databaseId, string collectionId, DocumentBase<T> item)
        {
            var container = _client.GetContainer(databaseId, collectionId);
           PartitionKey pk = new PartitionKey(item.key);
            var response = await container.CreateItemAsync<dynamic>(pk, item);
            return IsResponseValid(response.StatusCode);
        }

The Solution 1 does not match my current implementation because <T> is a List<ICompany> where each ICompany is a different concret type.
The Solution 2 is half a solution because the project rely today on the current behavior of the SDK (Exceptions included) to ensure that the project is resilient.
The Solution 3 is working thanks ! 👍
Could it be possible to have an option to avoid getting the Document back to the response ?
It will avoid resource consumption of the CosmosDB API if the response.Document is not used

It will avoid memory allocation + deserialization at SDK level

@YohanSciubukgian that's great. For solution 2 I updated it. There is a method response.EnsureSuccessStatusCode(); that will throw the exception like normal if it is needed.

@j82w inserting as dynamic works. But what about querying after the document is already in the database? How can I make this work?
                /// <summary>
		/// Queries the documents that matches the given predicate
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="predicate"></param>
		/// <returns></returns>
		private async Task<IQueryable<T>> QueryAsync<T>(Expression<Func<T, bool>> predicate) where T : class, IEntity
		{
			Container container = _context.GetContainer<T>();
			QueryRequestOptions requestOptions = new()
			{
				MaxItemCount = -1,
				MaxConcurrency = -1
			};

			IQueryable<T> query = container.GetItemLinqQueryable<T>(true, requestOptions: requestOptions);
			if (predicate != null)
			{
				query = query.Where(predicate);
			}
			return await Task.FromResult(query);
		}

The following code should work. If it does not work please create a new issue with the exception you are seeing.
        private async Task<IQueryable<T>> QueryAsync<T>(Expression<Func<T, bool>> predicate) where T : class, IEntity
        {
            Container container = _context.GetContainer<T>();
            QueryRequestOptions requestOptions = new()
            {
                MaxItemCount = -1,
                MaxConcurrency = -1
            };

            // Do not use allowSynchronousQueryExecution. It does blocking calls which cause deadlock and thread starvation
            IQueryable<T> query = container.GetItemLinqQueryable<T>(allowSynchronousQueryExecution: false, requestOptions: requestOptions);
            if (predicate != null)
            {
                query = query.Where(predicate);
            }

            List<T> results = new List<T>();
            using (FeedIterator<T> setIterator = query.ToFeedIterator<T>())
            {
                //Asynchronous query execution
                while (setIterator.HasMoreResults)
                {
                    var response = await setIterator.ReadNextAsync();
                    results.AddRange(response);
                }
            }
        }


ESP32 doesn't support full getaddrinfo() params

Hey guys!
I'm trying to setup my ESP32 to run picoweb. I did a fresh installations of Micropython, did all the installs with upip. but when I try to run the example code i get the following response:
Traceback (most recent call last):
File "main.py", line 64, in
File "/lib/picoweb/init.py", line 287, in run
File "/lib/uasyncio/core.py", line 146, in run_forever
File "/lib/uasyncio/core.py", line 101, in run_forever
File "/lib/uasyncio/init.py", line 235, in start_server
TypeError: function takes 2 positional arguments but 4 were given
the code I'm currently running is:
import uasyncio
import picoweb

def index(req, resp):
    yield from picoweb.start_response(resp)
    yield from resp.awrite("""\
<!DOCTYPE html>

""")

def events(req, resp):
    print("Event source connected")
    yield from resp.awrite("HTTP/1.0 200 OK\r\n")
    yield from resp.awrite("Content-Type: text/event-stream\r\n")
    yield from resp.awrite("\r\n")
    i = 0
    try:
        while True:
            yield from resp.awrite("data: %d\n\n" % i)
            yield from uasyncio.sleep(1)
            i += 1
    except OSError:
        print("Event source connection closed")
        yield from resp.aclose()

ROUTES = [
    ("/", index),
    ("/events", events),
]

app = picoweb.WebApp(__name__, ROUTES)
app.run(debug=True)

my network configuration is done in a boot file before this code is being run but i don't think the problem is in there. Any of you have an idea where I might have made an error?

This should be fixed in micropython mainline now.


Scroll problem on input text focus

Hi,
i have the same problem of issue #19 . My game is not at top of the page; so, when i click on the input field, the page scroll to top and it is impossible to write on it.
I'm using phaser-input - version 2.0.5 .
Thank you for your support.

Maybe i have solved my scroll problem:
var canvasTopX = this.game.canvas.getBoundingClientRect().top +  document.documentElement.scrollTop;
insted of
var canvasTopX = this.game.canvas.getBoundingClientRect().top + document.body.scrollTop;
It seemed to fix the problem when the input gains focus because I have seen that the instruction document.body.scrollTop returns always 0.


HTMLSelectElement missing validation properties and methods.

The type definition of HTMLSelectElement is missing validation properties and methods.

https://github.com/facebook/flow/blob/365e61b4dac03531b003ea201efe3dccf4da3890/lib/dom.js#L3162-L3185

Do you want to create a PR?

Sure thing.


feat: metadata.name field in child resource

When defining a child resource with operator-builder, it is often times desirable to take in the input of a parent resource field.  The metadata.name field is the one in particular that is NOT accessible to child resources, because it is not defined with a marker, but would be real helpful to be able to use.
Consider the following resource:
---
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
  # +operator-builder:field:name=clusterName,type=string,description=`
  # Name of the GKE cluster to create.`
  name: cluster

In the above example, a spec of the following would be used:
apiVersion: v1alpha1
kind: MyKind
metadata:
  name: my-cluster
spec:
  clusterName: my-cluster

The clusterName field must be defined in order for the input to be used, but it may make sense, in this instance to simply use the metadata.name field of the parent resource.
Maybe a marker like this would make sense:
---
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
  # +operator-builder:field:fromMetadataName,description=`
  # Name of the GKE cluster to create.`
  name: cluster

Closing in favor of https://github.com/vmware-tanzu-labs/operator-builder/issues/248.


mod_exp: Add heQatBnModExp_MT for app level multi thread use case

In order to support multi threading at the APP level, the heQatBnModExp_MT function was introduced In this PR(to replace the heQatBnModExp function). There is no difference in performance between these two functions. The performance comparison is shown in the following figures.


Ethan/8/sort tags

This is on top of previous pull request which moved filters from column to filter screen.  I copied feedback from that pull request into this one.  All suggestions have been implemented except for "Display All xxx Projects" - there are significant performance issues if you do this.
Additionally:

Added checkboxes to hide/display column.
Adjusted column sizes so that organization, project, issues, and changed since columns were fixed width.  This gives more space to description and tags.
Sorted tags by name rather than frequency - it was confusing for me and I think having tags with similar prefixes to be next to each other.

Below are feedback from the meeting of 6/15.
Add some space between the blue line and the first selects of the filter, as well as underneath the filter.
Change the font of "Overview" and the title (now in bright blue) to match the font of the page.
Change "Looking to volunteer for an open source Civic Tech Github (and non Github) application?" into
"Looking for an open source Civic Tech GitHub project?"
Now it is missing the number of projects retrieved, it is useful, I'd put it back.
Organization select doesn't have reset functionality. Also right now, typing show a matching list of organizations. This is different from how it was before that was a text type ahead filter.
Make all dropdowns visually more consistent (make an issue).
Add space on left of the table header like it is on the right side.
We agreed on open the project page (when user click on the project name) in a new tab.
And to add another button at the bottom to say "Display All [x] Projects".

Great work @ethanstrominger!
Here are my initial comments (to keep in mind that preview seems to use larger font than real deployment):

Font in the Filter section seems larger than the rest of the website
"Search our curated list of Civic Tech Open Source applications for the ideal volunteer opportunity" I think we said to say "projects" instead of applications, in my opinion the list is not really "curated" and the purpose is not only for volunteer opportunities (we said it can be to see how many CfA projects tackle one issue, it can be to find projects for a client, etc.
The "Hide/Show" button is graphically different
I don't see the "Tags" selector anymore?
I see that we open the project in a new tab. I think if you give it a name it will keep reusing the second opened tab, right now it keeps opening new tabs
I'd leave the order of columns (project first) like it was before
Hide/show columns is a great functionality. However, a) I don't think we need it with this number of columns, b) it takes too much space, those checkboxes are too prominent. I made the large "Only CfA" checkbox to match the other controls but I don't think they look nice these many.

@giosce Thanks for the review.  See comments to your review below.  Some I implemented others IMO were better to keep.  Reasoning is listed below.

Font in the Filter section seems larger than the rest of the website

This is existing behavior.  Larger fonts for paragraphs read better?  If you go to About page

"Search our curated list of Civic Tech Open Source applications for the ideal volunteer opportunity" I think we said to say "projects" instead of applications, in my opinion the list is not really "curated" and the purpose is not only for volunteer opportunities (we said it can be to see how many CfA projects tackle one issue, it can be to find projects for a client, etc.

I changed applications to projects.
I left the word "curated".  We do not show every project on Github so it is curated, even if minimally.
I changed the purpose part of the paragraph.  I did not remove volunteering but I added other reasons.  This is a good website for people interested in volunteering and so including the word "Volunteer" will help with google results.

The "Hide/Show" button is graphically different

Fixed

I don't see the "Tags" selector anymore?

Can you be more specific

I see that we open the project in a new tab. I think if you give it a name it will keep reusing the second opened tab, right now it keeps opening new tabs

Hmm.  IMO it is good to open in a new tab each time because (a) I might want to look at multiple projects and (b) I might reuse the tab for some other purpose so it would be annoying if the contents were changed

I'd leave the order of columns (project first) like it was before
Hide/show columns is a great functionality. However, a) I don't think we need it with this number of columns, b) it takes too much space, those checkboxes are too prominent. I made the large "Only CfA" checkbox to match the other controls but I don't think they look nice these many.

I left the options in but tried to improve the appearance by adding a divider and decreasing font size to be same as the table.  Depending on the width of your screen I have found it useful to hide columns and I think others would also.

Looking good!
Sorry, just some minor comment:

I'd really use smaller, simpler checkbox for show/hide column. It is possible that I created the larger checkbox (for CfA only) as default checkbox, maybe you can just enforce a smaller size? Or we can try to change the class of the "CfA only" and leave the default checkbox for show/hide column (but I know isn't easy, checkbox customization is very limited).
It seems that the label "Only Code For America?" is another (smaller) font
Columns content can overlap. Try to filter for "Bike" in the Tags control
"Last Push" over_a_year is wrapped up, it doesn't look good

There is still the overlapping of text columns and the breaking of over_a_year for last_push
https://deploy-preview-359--dreamy-snyder-8339ae.netlify.app/?timeRange=all time&topics=Bike

It looks good now!
If I can just leave 2 minor feedbacks (I'm picky sorry).
Wouldn't you put a 3 words explanation on the show/hide columns checkboxes? Like at the beginning of that line something like "show/hide columns" or similar?
If the project name (link) is long, it breaks/wraps ... off course. But even when removing columns, the description keep taking more and more width and the project name/link is almost the last one to gain width. Not sure if it is something addressable.

I added Show/Hide Columns.  The other issue would be hard to fix - the width of tag and description are variable, as these will often have a lot of text and the others are fixed.  If you hide both description and tags it expands.


nginx config files

Hi,
I've been testing with Authelia and have some issues getting the nginx config correct.
What I am trying to do is the following;

Hosting Authelia on a publicly accessible server
When 2FA is successful calling a proxy-pass to an internal webserver which hosts the actual website.

As there are multiple examples for nginx configs here I have tried all or at least most of them but so far I have been unable to get it all working.
I've attached a zip file with my configs (Authelia and nginx, anonymised)
in etc/nginx/sites-available/reverse-proxy.conf is a working config for a not-protected proxy-pass. The purpose is to protect this by Authelia.
authelia-test-config.zip
I post it here for two reasons, first, I'm stuck and hope for some help :) Second, I hope to help others getting this up and running by sharing some working configs.

I've included an extract of my nginx config below.
This includes, the Authelia application hosted in Docker as the container named authelia and published at auth.example.com an example of Nextcloud hosted in Docker as the container named nextcloud and published at nextcloud.example.com and the respective additional nginx configuration.
authelia.conf is included on every host as part of the template, however, I only include auth.conf for endpoints that need protection and have been configured in my Authelia config.yml. The proxy.conf is included whenever reverse proxying.
auth.example.com
server {
    server_name auth.example.com;
    listen 80;
    return 301 https://$server_name$request_uri;
}

server {
    server_name auth.example.com;
    listen 443 ssl http2;
    include /config/nginx/ssl.conf;

    location / {
        set $upstream_authelia http://authelia:8080;
        proxy_pass $upstream_authelia;
        include /config/nginx/proxy.conf;
    }
}

nextcloud.example.com
server {
    server_name nextcloud.example.com;
    listen 80;
    return 301 https://$server_name$request_uri;
}

server {
    server_name nextcloud.example.com;
    listen 443 ssl http2;
    include /config/nginx/ssl.conf;
    include /config/nginx/authelia.conf;

    location / {
        set $upstream_nextcloud https://nextcloud;
        proxy_pass $upstream_nextcloud;
        include /config/nginx/auth.conf;
        include /config/nginx/proxy.conf;
    }
}

authelia.conf
location /authelia {
    internal;
    set $upstream_authelia http://authelia:8080/api/verify;
    proxy_pass_request_body off;
    proxy_pass $upstream_authelia;
    proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
    proxy_set_header Content-Length "";

    # Timeout if the real server is dead
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

    # Basic Proxy Config
    client_body_buffer_size 128k;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Uri $request_uri;
    proxy_set_header X-Forwarded-Ssl on;
    proxy_redirect  http://  $scheme://;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_cache_bypass $cookie_session;
    proxy_no_cache $cookie_session;
    proxy_buffers 4 32k;

    # Advanced Proxy Config
    send_timeout 5m;
    proxy_read_timeout 240;
    proxy_send_timeout 240;
    proxy_connect_timeout 240;
}

auth.conf
# Basic Authelia Config
auth_request /authelia;
auth_request_set $target_url $scheme://$http_host$request_uri;
auth_request_set $user $upstream_http_remote_user;
auth_request_set $groups $upstream_http_remote_groups;
proxy_set_header X-Forwarded-User $user;
proxy_set_header X-Forwarded-Groups $groups;
error_page 401 =302 https://auth.example.com/#/?rd=$target_url;

proxy.conf
client_body_buffer_size 128k;

#Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# Advanced Proxy Config
send_timeout 5m;
proxy_read_timeout 360;
proxy_send_timeout 360;
proxy_connect_timeout 360;

# Basic Proxy Config
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect  http://  $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 64 256k;

# If behind reverse proxy, forwards the correct IP
set_real_ip_from <IP_ADDRESS>/8;
set_real_ip_from <IP_ADDRESS>/8;
set_real_ip_from <IP_ADDRESS>/16;
set_real_ip_from fc00::/7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

@Iwan-Authelia does this help, has your issue been resolved?

@nightah Thanks mate, it helped a lot and I have a working setup. Still trying to resolve a few issues, I will post a follow up over the next few days. One of the issues is that emails sent to reset password or register a 2fa device have a none working link starting with https:/// instead of https://domain/
I'm using the V4 binary artifact posted by @clems4ever lately.

@Iwan-Authelia this email template is a configuration issue on my side there was a missing header.
proxy.conf
client_body_buffer_size 128k;

#Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# Advanced Proxy Config
send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;

# Basic Proxy Config
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect  http://  $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;
#proxy_buffers 32 4k;

# If behind reverse proxy, forwards the correct IP
set_real_ip_from <IP_ADDRESS>/8;
set_real_ip_from <IP_ADDRESS>/8;
set_real_ip_from <IP_ADDRESS>/16;
set_real_ip_from fc00::/7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

@nightah That did the trick! Thanks!

Can we close the thread if the issue is reolved? Thanks.

I'm closing it, please reopen if needed.

@Iwan-Authelia also another small adjustments to make sure redirects work:
auth.conf
# Basic Authelia Config
auth_request /authelia;
auth_request_set $target_url $scheme://$http_host$request_uri;
auth_request_set $user $upstream_http_remote_user;
auth_request_set $groups $upstream_http_remote_groups;
proxy_set_header X-Forwarded-User $user;
proxy_set_header X-Forwarded-Groups $groups;
error_page 401 =302 https://auth.example.com/?rd=$target_url;


avoid inserting duplicate feature_amounts_per_planning_unit rows over and over [MRXN23-609]

https://vizzuality.atlassian.net/browse/MRXN23-609

the banality of evil... 🙄
geoprocessing-production=> select count(*) from (select distinct project_pu_id, count(*) from features_data where feature_id = 'e334efba-97f6-43de-bd6b-f08950e4af0d' group by project_pu_id) a;
 count
-------
 14163
(1 row)

and
geoprocessing-production=> select count(*) from feature_amounts_per_planning_unit where feature_id = 'e334efba-97f6-43de-bd6b-f08950e4af0d';
 count
--------
 119163
(1 row)

119163 = \sum_{1}^{14}1000*n + 14163

Another feature from the project we were using to triage this:
geoprocessing-production=> select count(*) from feature_amounts_per_planning_unit where feature_id = '30b39d9e-ba84-4188-9721-a50bb1458ae0';
 count
-------
 54266
(1 row)

geoprocessing-production=> select count(*) from features_data where feature_id = '30b39d9e-ba84-4188-9721-a50bb1458ae0';
 count
-------
  9266
(1 row)

54266 = \sum_{1}^{9}1000*n + 9266

I can run more exhaustive checks on Monday, but my bet is on this 😃


fix require(...) in example to avoid confusion

Thanks! Good thinking @felixk101 and thanks for your PR! Was fixed when merging #21, though.


Adding the Wiki page on github

The Wiki page is not setup

Once setup add to the wiki page:

https://github.com/NightlyCommit/twing/issues/438

@noelelias I'm not a maintainer of this project, but I generally advice against using the wiki on a Github project. The main reason is that only project maintainers (with push access) have write access to the wiki.
Better is that any change to documentation is also submitted by a Pull Request. Anybody can submit pull requests which means that contribution to documentation is also a community effort.
I would suggest to convert your GH issue to a pull request against the docs folder in this project. Once it is in there, it can be published to the site, with is hosted on Github pages.


Indexer restart the index database after restart

Hi
It seems like the indexer rebuilds the whole code search index from scratch everytime I restart Gitea. To be sure I waited over a day to make sure it indexed everything, though I can t be sure but whole day sounds enough for a repo around 1.2GB The index db stabilized around 620MB so I am sure it stopped indexed before I restarted
I am using Gitea Version: 34696f4 on Debian Testing

To clarify: The repo is 1.2GB and the code search index is only 620MB?
If yes, that's unusual as the index is normally bigger than the repo. Do you have a lot of binary files in your git repo?

Yeah the total repo is like 1.2GB and the indexer tops around 620MB.
I am not sure about binaries, this particular instance is mostly git mirros like Blender repo etc


Remove venv from project folder

Current venv has production paths in which are not at all useful.
Remove venv and document how to setup venv regardless of project location.


Problem when Upgrade plugin to 3.11.0

Hi!
I tried to update my plugin to 3.11.0 now, and i have some issues.
1 - When i update plugin from 3.60 to 3.11.0 The plugin stopped to work and i got an 404 error.
I did as i read here and cleared my cache, restart browser, etc.
I had to come back to version 3.10.0 and then, everything come back to "work".
2 - Now, i'm experiencing another problem with "Zabbix Problem Visualization"
I can add an this componente and configure it at first time. but, when
i come back to main painel, go to "Zabbix problem visualization" menu and click in EDIT,
i can't see nothing on my scree. Everything is black.
I don't  known if anyone have experienced this, but i'm having this problem today.
Thank you.

Grafana
Zabbix
Grafana-Zabbix Plugin

6.2.5x
3.4.15
3.11.0

Hi! Latest version of plugin (3.11) is working only with Grafana > 6.7. So in order to use latest plugin, upgrade grafana.
Reminder for myself: add compatibility matrix


~50% unused bytes in app.js with Chrome Dev Tools Coverage

Chrome Dev Tools code coverage utility
—

In production, of course.
—
Apart from the CSS (first time using styled-jsx and will need to improve shared styles design or use something like styletron) — have I misunderstood the automatic code splitting feature?
To give some context, I use a HOC to wrap each page, and I'm passing both methods and props that don't necessarily get used by each page. Additionally: I may have been careless here and there with some imports; I use re-base which currently imports all of Firebase (not necessary in my use case).
Am I possibly mixing webpack's automatic code splitting with static analysis and tree shaking a là rollup?

If not, do you have any suggestions regarding how to approach and solve this problem? Chrome Dev Tools coverage results cannot be exported trivially just yet and therefore I'm not sure how to identify unused code paths and imports with the minified output.

Would using something like webpack-rollup-loader be possible and make sense?

Can any of this lead to improvements to the already awesome way Next works?

Thanks!

I assume this is because how webpack handles tree-shaking.
It needs ES2015 modules. I hope React doesn't provide that and that's why this is.
But I would like to experiment here. Any ideas/improvements welcome.

Possibly related to webpack#2867?

Linked from that thread, here is apparently a utility to test if tree shaking happens properly in Webpack:
https://github.com/halt-hammerzeit/es6-tree-shaking-test


Add sip routing to latest communication-phone-numbers library

Update latest communication-phone-numbers sdk to include Sip Routing

#sign-off

#sign-off

Closing this PR since docs are updated automatically when SDK is released


Lavalink server crashing 50% of the time.

Description
Half of the time, when I try playing with Lavalink, it crashes with this:
Exception in websocket connection, closing. Channel state is Websocket Channel is null

java.lang.IllegalStateException: Failed to connect to wss://eu-central219.discord.media/?v=4

I can't get a consistent result at this, it doesn't work sometimes and sometimes it does.
Version info
Client used: erela,js
Output of java -jar Lavalink.jar --version:
The output is fine at the start but crashes when I start playing.

From the information you provided I can only tell you that version 4 of Discord's API is discontinued and it is expected to not be reachable.

OK, then how do I use a new one? I copied the application.yml file from a ready template and didn't really change anything there.

Output of java -jar Lavalink.jar --version
Please

From the information you provided I can only tell you that version 4 of Discord's API is discontinued and it is expected to not be reachable.

This is misinformation. The voice servers have a different protocol from the main gateway. The URL is fine.
@NorteX-dev you've failed to provide the required version info and full logs. Without those, we can't help you.

Then tell me what you need and how do I gather it.
I'll be fast to respond.

Exact logs:
$ java -jar lavalink.jar
2020-04-03 14:26:42.316  INFO 8092 --- [           main] lavalink.server.Launcher                 :

       .   _                  _ _       _    __ _ _
      /\\ | | __ ___   ____ _| (_)_ __ | | __\ \ \ \
     ( ( )| |/ _` \ \ / / _` | | | '_ \| |/ / \ \ \ \
      \\/ | | (_| |\ V / (_| | | | | | |   <   ) ) ) )
       '  |_|\__,_| \_/ \__,_|_|_|_| |_|_|\_\ / / / /
    =========================================/_/_/_/

	Version:        e7220eaecb3f1db1cd21a1c1ba47d464358b141f-SNAPSHOT
	Build:          1002
	Build time:     28.03.2020 19:31:09 UTC
	Branch          master
	Commit:         e7220ea
	Commit time:    28.03.2020 19:29:10 UTC
	JVM:            14
	Lavaplayer      1.3.38

2020-04-03 14:26:42.427  INFO 8092 --- [           main] lavalink.server.Launcher                 : Starting Launcher on NorteX with PID 8092 (C:\Users\Lenovo\Desktop\Bots Archive\JS\NortexMusic\lavalink\lavalink.jar started by Lenovo in C:\Users\Lenovo\Desktop\Bots Archive\JS\NortexMusic\lavalink)
2020-04-03 14:26:42.428  INFO 8092 --- [           main] lavalink.server.Launcher                 : No active profile set, falling back to default profiles: default
2020-04-03 14:26:43.848  WARN 8092 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2020-04-03 14:26:43.888  INFO 8092 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2020-04-03 14:26:43.888  INFO 8092 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1414 ms
2020-04-03 14:26:44.329  WARN 8092 --- [           main] l.server.config.SentryConfiguration      : Turning off sentry
2020-04-03 14:26:44.336  INFO 8092 --- [           main] l.s.c.AudioSendFactoryConfiguration      : OS: Windows 10, Arch: amd64
2020-04-03 14:26:44.337  INFO 8092 --- [           main] l.s.c.AudioSendFactoryConfiguration      : JDA-NAS supported system detected. Enabled native audio sending.
2020-04-03 14:26:44.337  INFO 8092 --- [           main] l.s.c.AudioSendFactoryConfiguration      : Setting buffer to 400ms
2020-04-03 14:26:44.337  INFO 8092 --- [           main] l.s.c.AudioSendFactoryConfiguration      : Setting playlist load limit to 6
2020-04-03 14:26:44.803  INFO 8092 --- [           main] c.s.d.l.tools.GarbageCollectionMonitor   : GC monitoring enabled, reporting results every 2 minutes.
2020-04-03 14:26:45.428  INFO 8092 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-04-03 14:26:45.795  INFO 8092 --- [           main] org.xnio                                 : XNIO version 3.3.8.Final
2020-04-03 14:26:45.847  INFO 8092 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final
2020-04-03 14:26:45.942  INFO 8092 --- [           main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 2333 (http) with context path ''
2020-04-03 14:26:45.947  INFO 8092 --- [           main] lavalink.server.Launcher                 : Started Launcher in 4.45 seconds (JVM running for 5.887)
2020-04-03 14:27:11.473  INFO 8092 --- [  XNIO-1 task-1] io.undertow.servlet                      : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-04-03 14:27:11.474  INFO 8092 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-04-03 14:27:11.515  INFO 8092 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 37 ms
2020-04-03 14:27:11.847  INFO 8092 --- [  XNIO-1 task-1] l.server.io.HandshakeInterceptorImpl     : Incoming connection from /<IP_ADDRESS>:54863
2020-04-03 14:27:11.847  INFO 8092 --- [  XNIO-1 task-2] l.server.io.HandshakeInterceptorImpl     : Incoming connection from /<IP_ADDRESS>:54862
2020-04-03 14:27:12.784  INFO 8092 --- [  XNIO-1 task-2] lavalink.server.io.SocketServer          : Connection successfully established from /<IP_ADDRESS>:54862
2020-04-03 14:27:12.784  INFO 8092 --- [  XNIO-1 task-1] lavalink.server.io.SocketServer          : Connection successfully established from /<IP_ADDRESS>:54863
2020-04-03 14:29:47.851  INFO 8092 --- [   XNIO-1 I/O-3] lavalink.server.io.SocketServer          : Connection closed from /<IP_ADDRESS>:54863 -- CloseStatus[code=1006, reason=]
2020-04-03 14:29:47.851  INFO 8092 --- [   XNIO-1 I/O-2] lavalink.server.io.SocketServer          : Connection closed from /<IP_ADDRESS>:54862 -- CloseStatus[code=1006, reason=]
2020-04-03 14:29:47.851  INFO 8092 --- [   XNIO-1 I/O-3] lavalink.server.io.SocketContext         : Shutting down 0 playing players.
2020-04-03 14:29:47.852  INFO 8092 --- [   XNIO-1 I/O-2] lavalink.server.io.SocketContext         : Shutting down 0 playing players.
2020-04-03 14:29:50.600  INFO 8092 --- [  XNIO-1 task-3] l.server.io.HandshakeInterceptorImpl     : Incoming connection from /<IP_ADDRESS>:54897
2020-04-03 14:29:50.609  INFO 8092 --- [  XNIO-1 task-3] lavalink.server.io.SocketServer          : Connection successfully established from /<IP_ADDRESS>:54897
2020-04-03 14:30:14.528  INFO 8092 --- [  XNIO-1 task-4] l.server.player.AudioLoaderRestHandler   : GET /loadtracks
2020-04-03 14:30:14.754  INFO 8092 --- [   XNIO-1 I/O-1] lavalink.server.io.SocketServer          : {"sessionId":"c642bbb9b5dd4caa7f766a1ca63c91b2","op":"voiceUpdate","guildId":"602569767294861335","event":{"token":"05902b11efb3d19f","guild_id":"602569767294861335","endpoint":"eu-central814.discord.media:80"}}
2020-04-03 14:30:14.995  INFO 8092 --- [     parallel-4] com.jcabi.manifests.Manifests            : 73 attributes loaded from 84 stream(s) in 134ms, 73 saved, 1240 ignored: ["Ant-Version", "Archiver-Version", "Automatic-Module-Name", "Bnd-LastModified", "Build-Jdk", "Build-Jdk-Spec", "Build-Time", "Built-By", "Bundle-ActivationPolicy", "Bundle-Activator", "Bundle-Category", "Bundle-Description", "Bundle-DocURL", "Bundle-License", "Bundle-ManifestVersion", "Bundle-Name", "Bundle-NativeCode", "Bundle-RequiredExecutionEnvironment", "Bundle-SymbolicName", "Bundle-Vendor", "Bundle-Version", "Copyright", "Created-By", "Export-Package", "Extension-Name", "Git-Revision", "Implementation-Build", "Implementation-Build-Date", "Implementation-Title", "Implementation-URL", "Implementation-Vendor", "Implementation-Vendor-Id", "Implementation-Version", "Import-Package", "Include-Resource", "JCabi-Build", "JCabi-Date", "JCabi-Version", "Jar-Name", "Jar-Version", "Java-Vendor", "Java-Version", "Kotlin-Runtime-Component", "Kotlin-Version", "Log4jReleaseKey", "Log4jReleaseManager", "Log4jReleaseVersion", "Magma-Version", "Main-Class", "Manifest-Version", "Multi-Release", "Originally-Created-By", "Os-Arch", "Os-Name", "Os-Version", "Private-Package", "Provide-Capability", "Require-Bundle", "Require-Capability", "Scm-Connection", "Scm-Revision", "Scm-Url", "Specification-Title", "Specification-Vendor", "Specification-Version", "Spring-Boot-Classes", "Spring-Boot-Lib", "Spring-Boot-Version", "Start-Class", "Tool", "X-Compile-Source-JDK", "X-Compile-Target-JDK", "url"]
2020-04-03 14:30:16.923  INFO 8092 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded playlist Search results for: Nightcore - Demons
2020-04-03 14:30:23.229  INFO 8092 --- [   XNIO-1 I/O-1] lavalink.server.io.SocketServer          : {"op":"play","guildId":"602569767294861335","track":"QAAAfAIAEk5pZ2h0Y29yZSAtIERlbW9ucwAQTmlnaHRjb3JlUmVhbGl0eQAAAAAAApBAAAtiT3BMczZxZllvSQABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWJPcExzNnFmWW9JAAd5b3V0dWJlAAAAAAAAAAA=","volume":100}
2020-04-03 14:30:30.246 ERROR 8092 --- [   XNIO-4 I/O-1] s.n.m.impl.connections.AudioWebSocket    : Exception in websocket connection, closing. Channel state is Websocket Channel is null

java.lang.IllegalStateException: Failed to connect to wss://eu-central814.discord.media/?v=4
	at space.npstr.magma.impl.connections.hax.ClosingUndertowWebSocketClient$1.handleFailed(ClosingUndertowWebSocketClient.java:79) ~[impl-0.12.5.jar!/:na]
	at org.xnio.IoFuture$HandlingNotifier.notify(IoFuture.java:215) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture$1.run(AbstractIoFuture.java:211) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.IoUtils$2.execute(IoUtils.java:70) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.runNotifier(AbstractIoFuture.java:354) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.runAllNotifiers(AbstractIoFuture.java:233) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.setException(AbstractIoFuture.java:251) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.FutureResult.setException(FutureResult.java:89) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at io.undertow.websockets.client.WebSocketClient$ConnectionBuilder$2.notify(WebSocketClient.java:342) ~[undertow-core-2.0.26.Final.jar!/:2.0.26.Final]
	at org.xnio.AbstractIoFuture$1.run(AbstractIoFuture.java:211) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.IoUtils$2.execute(IoUtils.java:70) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.runNotifier(AbstractIoFuture.java:354) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.runAllNotifiers(AbstractIoFuture.java:233) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.AbstractIoFuture.setException(AbstractIoFuture.java:251) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.FutureResult.setException(FutureResult.java:89) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:425) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.http.HttpUpgrade$HttpUpgradeState.flushUpgradeChannel(HttpUpgrade.java:369) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.http.HttpUpgrade$HttpUpgradeState.access$900(HttpUpgrade.java:165) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.http.HttpUpgrade$HttpUpgradeState$StringWriteListener.handleEvent(HttpUpgrade.java:396) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.http.HttpUpgrade$HttpUpgradeState$StringWriteListener.handleEvent(HttpUpgrade.java:372) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler.writeReady(WriteReadyHandler.java:65) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	at io.undertow.protocols.ssl.SslConduit$SslWriteReadyHandler.writeReady(SslConduit.java:1273) ~[undertow-core-2.0.26.Final.jar!/:2.0.26.Final]
	at io.undertow.protocols.ssl.SslConduit$4.run(SslConduit.java:430) ~[undertow-core-2.0.26.Final.jar!/:2.0.26.Final]
	at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:582) ~[xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
	at org.xnio.nio.WorkerThread.run(WorkerThread.java:466) ~[xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
Caused by: java.io.EOFException: XNIO000812: Connection closed unexpectedly
	at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:416) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
	... 10 common frames omitted

JDK 14 is currently broken. Please see #258 and #263
You can downgrade to JDK 13 or you could try the experimental PR.

OK, thanks for the help.
I will try installing another JDK (my server recommended me to use JDK 11 so that's what I'll go for)

OK, that seems to have fixed the issue entirely.
I can now enjoy the spicy clear sound of Lavalink :D

@NorteX-dev
Which JDK did you eventually switch to?

@DJS3M3N according to the README you should use java 11-13.
Java 11 runs fine for me tho

I use JDK12 and it works fine now.


fix(platform-serverless): add fallback to ServerlessResponseStream in stance when the lambda stream si misconfigured

:tada: This PR is included in version 7.78.1 :tada:
The release is available on:

v7.78.1
GitHub release

Your semantic-release bot :package::rocket:


Error during installation on RasPi 4

Hello everyone,
I've just tried to set up a IOTA GOSHIMMER node with the GoShimmer Playbook. Unfortunately after executing
sudo bash -c "bash <(curl -s https://raw.githubusercontent.com/nuriel77/goshimmer-playbook/master/goshimmer_install.sh)"
and after some time during the installation it fails while trying to build the goshimmer image.
Attached you can find the error log file which has been created. Unfortunately I'm pretty bad in interpreting the error messages.
I'd be grateful for any help or tips provided on how to solve!
goshimmer-playbook-202002102049.log

Hi @Octenisept
There's a bug with 32 bit OS and building goshimmer (I think because of the DB component, there's an issue opened about it).
In any case I advise to use a 64 bit OS (with Raspbian you can enable it arm_64bit = 1 I believe, see https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md or use Ubuntu 19 64 bit image: https://ubuntu.com/download/raspberry-pi)


Stop Collapse from appending -nolog when console is disabled

This is for #126

Disables both ReadOutputLog and GameLogWatcher when console is disabled
Removing -nolog game launch parameter when console is disabled

Looking good!
As discussed on Discord, Starting to merge this PR now


doc: net: mqtt: Add info for mosquitto >= 2.0 on mqtt publisher sample

From mosquitto 2.0 and up:

In Mosquitto 2.0 and up, you must choose your authentication options explicitly before clients can connect. In earlier versions the default is to allow clients to connect without authentication.

On most linux distributions, the shipped version of mosquitto is >= 2.0. The additional configuration required is not written in the mqtt publisher sample, and therefore the sample doesn't work.
The required configuration options are added and a bit of information how to configure the ethernet interface to the Linux host computer.

@rlubos @jukkar can you please revisit?


Ionic does not properly follow material design for forms in android

Ionic version:  (check one with "x")
[ ] 1.x (For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[x] 3.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
The material design styling for form is not adhering to the specification. The guidelines say that inputs are expacted to have a Input line as part of the layout, but ionic is using the ion-item separator as a hack. This cause weird errors and inconsistencies as it can be observed in https://ionicframework.com/docs/components/#inset-labels:

No line for the password input
User input starts in the middle of the textfield.

All the other examples are missing the margin in the right side.
Expected behavior:

Margin on both sides of the line (works properly only on inset labels example)
Input line in all the inputs
Drop support to inset labels in material version. The label always should go to the top or start already there.

Steps to reproduce:
Reproduce-able by observing the examples in ionic docs
Other information:
Two examples on how the forms should look like

Regular form
Full-width field form

Hello, thanks for opening an issue with us! We will look into this!

Any progress?


AZURE_RM_STORAGEACCOUNT module not working

Python version : 2.7.13
Ansible version : 2.3.1
azure version : 2.0.0rc5
I was trying to use azure_rm_storageaccount module to create a new storage account in azure cloud via ansible . I was getting the following error during ansible run :
The full traceback is:
Traceback (most recent call last):
  File "/var/folders/wh/pfvl8qvs0x5_pz59b64nkknr0000gn/T/ansible_aoOgG3/ansible_module_azure_rm_storageaccount.py", line 154, in <module>
    from ansible.module_utils.azure_rm_common import *
  File "/var/folders/wh/pfvl8qvs0x5_pz59b64nkknr0000gn/T/ansible_aoOgG3/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py", line 29, in <module>
ImportError: No module named packaging.version

fatal: [<IP_ADDRESS>]: FAILED! => {
    "changed": false,
    "failed": true,
    "module_stderr": "Traceback (most recent call last):\n  File \"/var/folders/wh/pfvl8qvs0x5_pz59b64nkknr0000gn/T/ansible_aoOgG3/ansible_module_azure_rm_storageaccount.py\", line 154, in <module>\n    from ansible.module_utils.azure_rm_common import *\n  File \"/var/folders/wh/pfvl8qvs0x5_pz59b64nkknr0000gn/T/ansible_aoOgG3/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py\", line 29, in <module>\nImportError: No module named packaging.version\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE",
    "rc": 0
}

Hi @SudeepParajuli
This is not an Azure SDK for Python issue, but an Ansible issue, please open an issue on their repo, so it's labeled and tracked correctly.
That being said, this issue is most of the time an old version of setuptools. You might update your setuptools to fix it.
Thank you,


[AKS] fix: aks cluster create issue

Description
fix: aks cluster create issue mentioned here: https://github.com/Azure/azure-cli/pull/14688#discussion_r476665073
`>az aks create -g vsoto-aks-aad-test-rg -n vsoto-aks-aad-test --enable-aad --aad-admin-group-object-id <>
Finished service principal creation[##################################] 100.0000%Property id '' at path 'properties.diskEncryptionSetID' is invalid. Expect fully qualified resource Id that start with '/subscriptions/{subscriptionId}' or '/providers/{resourceProviderNamespace}/'.

az --version
azure-cli 2.11.0

core 2.11.0
telemetry 1.0.5

Extensions:
azure-devops 0.11.0`

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

cc @vinisoto @MyronFanQiu

/lgtm. @andyzhangx Thanks for the fix!

hi @arrownj can this PR be merged now?

sfsfs


Added personal-files interface for snap

personal-files provides access to the specified files in the user’s home. This interface gives privileged access to the user’s data.

I see that currently only the .ssh-folder is requested. Wouldn't the ssh-keys interface be more appropriate?