[Zeppelin 946] Permissions not honoring group

What is this PR for?
Error:
Insufficient privileges to write notebook.
Allowed users or roles: [admin, zeppelinWrite]
But the user randerson belongs to: [randerson]
It's seems clear that user randerson isn't mapped to any roles, or groups (even though he of course is a member of the zeppelinWrite group in AD and as a result also part of the local admin Role). A TCPDUMP reveals that during login, all of my group memberships are in fact returned during the ldap bind operation. However, when I attempt to modify a notebook, a call is never made to AD, to pull back my group memberships. It doesn't seem to look at my local group memberships (/etc/group) either.
What type of PR is it?
[Bug Fix]
Todos

[x] - fix for permissions not honoring group
[x] - read roles from shiro.ini
[x] - at times group name was displaying instead of user/principal name.
[x] - doc

What is the Jira issue?
ZEPPELIN-946
Screenshots/How should this be tested?
Use one of the following setting for IniRealm, LDAP or AD in shiro.ini
[main]
admin = password1, admin
finance1 = finance1, finance
finance2 = finance2, finance
hr1 = hr1, hr
hr2 = hr2, hr

activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm
activeDirectoryRealm.systemUsername = userNameA
activeDirectoryRealm.systemPassword = passwordA
activeDirectoryRealm.searchBase = CN=Users,DC=SOME_GROUP,DC=COMPANY,DC=COM
activeDirectoryRealm.url = ldap://ldap.test.com:389
activeDirectoryRealm.groupRolesMap = "CN=admin,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"admin","CN=finance,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"finance","CN=hr,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"hr"
activeDirectoryRealm.authorizationCachingEnabled = false

ldapRealm = org.apache.zeppelin.server.LdapGroupRealm
# search base for ldap groups (only relevant for LdapGroupRealm):
ldapRealm.contextFactory.environment[ldap.searchBase] = dc=COMPANY,dc=COM
ldapRealm.contextFactory.url = ldap://ldap.test.com:389
ldapRealm.userDnTemplate = uid={0},ou=Users,dc=COMPANY,dc=COM
ldapRealm.contextFactory.authenticationMechanism = SIMPLE

[roles]
admin = *
hr = *
finance = *
group1 = *

[urls]
/api/version = anon
/** = authc

Login as user1 (say finance1), and set a permission of a notebook as "finance"

Save setting

Now logout and login as user2 (say finance2) which belong to the same group as above "finance", verify that you have access to the same notebook.

Logout and login again, this time as a user that does not belong to the group "finance", a user say hr1. Verify that this user does not have permission to view the same notebook.

Questions:

Does the licenses files need update? no
Is there breaking changes for older versions? no
Does this needs documentation? no

Ready for review

Thanks @prabhjyotsingh for the fix. Tested and looks good to me!
I think it'll be great to have a unittest for it, either in this pr or later in separate pr.

@Leemoonsoo thank you for taking a look at it. Have added a selenium test case for the same.

@prabhjyotsingh Is the fix Active Directory specific? What about if another LDAP (say OpenLDAP) is being used to store users and groups?

@vinayshukla, Yes, this fix is for both Active Directory and LDAP. Have tested this with configuring Active Directory running on Windows Server 2008, and on an open LDAP running on CentOS6.4.

Thanks for your work on this!  I built and deployed the zeppelin-946 branch.  Unfortunately, I'm unable to authenticate against AD.  Looking at the tcpdump, it appears activeDirectoryRealm.principalSuffix isn't honored.  As a result, the bind request searches for randerson, rather than<EMAIL_ADDRESS>

Hi @rja1,
I see two issues in your request;

Your AD require you to pass @domainName; I understand in some of the cases, depending on how you have configured AD, it requires you to pass "@domainName". And in your case this seem to be the issue, and hence when you pass  randerson with @company.com, it works.
Roles are not being assigned to the user; for this, here is what I recommend

make sure you have something like this configured in you shiro.ini activeDirectoryRealm.groupRolesMap = "CN=admin,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"admin","CN=finance,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"finance","CN=hr,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"hr"
and corresponding to each group you have a roles entry in shiro.ini

[roles]
admin = *
hr = *
finance = *
group1 = *

For your reference here is my shiro.ini, and on this configured AD server both zeppelin and<EMAIL_ADDRESS>user work fine. Let me know if this resolves the issue.
[main]
activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm
activeDirectoryRealm.principalSuffix = @SUB.MYDOMAIN.COM
activeDirectoryRealm.systemUsername = manager
activeDirectoryRealm.systemPassword = TestUser123
activeDirectoryRealm.searchBase = CN=Users,DC=SUB,DC=MYDOMAIN,DC=COM
activeDirectoryRealm.url = ldap://mydomain.com:389
activeDirectoryRealm.groupRolesMap = "CN=admin,OU=groups,DC=SUB,DC=MYDOMAIN,DC=COM":"admin"
activeDirectoryRealm.authorizationCachingEnabled = false

sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login

[roles]
admin = *

[urls]
/api/version = anon
/** = authc

@rja1 have made some changes, hope this(188ac170c7a0921044f301ae703bf580a71b2cdf) solves for "activeDirectoryRealm.principalSuffix isn't honoured"

Thanks once again @prabhjyotsingh.  I really appreciate your work. The activeDirectoryRealm.principalSuffix works now.  I do have some concerns about the number of ldap calls made and the amount of data pulled back.
It looks like the app:

makes ldap bindRequest as<EMAIL_ADDRESS>and fails.
makes ldap bindRequest as<EMAIL_ADDRESS>and succeeds.
makes a bindRequest as<EMAIL_ADDRESS>and succeeds
does a searchRequest for the wholeSubTree

Step 4 pulls back about 5mb of data, which is a lot.  Could add quite a lot of load to AD, if lots of users are simultaneously using the UI...  I can limit the result set by more fully qualifying the activeDirectoryRealm.searchBase, however, then it seems to miss the group data.  Seems like there should really just be only be a couple lightweight calls.

bind the username
pull back the group memberships for username (if step one was a success).

Not sure if there's a more concise way to make these queries in java.  I can do it via command line the following way: ldapsearch -xLLL -h ldapServer -b "dc=company,dc=com" -D "CN=LDAP Bind,OU=Special,Accounts,DC=company,DC=com" -W uid=randerson.  This returns everything about the uid: randerson, including all group memberships.  The total size of the data is 60k...
In addition, my groups / roles are still not mapped to my username, regardless of if the app searches the whole tree or not.  I'm not sure why.  Perhaps I've missed something along the way.
Here's my shiro.ini:
[main]
activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm
activeDirectoryRealm.systemUsername = username
activeDirectoryRealm.systemPassword = password
activeDirectoryRealm.searchBase = dc=company,dc=com
activeDirectoryRealm.url = ldap://server:389
activeDirectoryRealm.groupRolesMap = "cn=g.acl.ops.bigdata,ou=unix groups,ou=groups,ou=accounts,cn=users,dc=company,dc=com":"admin"
activeDirectoryRealm.authorizationCachingEnabled=false
<EMAIL_ADDRESS>shiro.loginUrl = /api/login
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
[roles]
admin = *
[urls]
/api/version = anon
/** = authc

@rja1, Thank you for much detailed analysis.

I have made another commit, this should take care of makes ldap bindRequest as<EMAIL_ADDRESS>and fails.

I cannot do anything for<EMAIL_ADDRESS>as this binding is required for searching the LDAP/AD tree.

For the following

Step 4 pulls back about 5mb of data, which is a lot.

I will recommend, tuning the shiro app by
activeDirectoryRealm.authorizationCachingEnabled = true
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $cacheManager

And for

In addition, my groups / roles are still not mapped to my username

Can you try and execute command below, and see if that works;
ldapsearch -h ldapServer -x -D "CN=${activeDirectoryRealm.systemUsername},${activeDirectoryRealm.searchBase}" -w ${activeDirectoryRealm.systemPassword} -b "${activeDirectoryRealm.groupRolesMap[0]}"

Nice job @prabhjyotsingh, thanks for your work!   I don't see the extra ldap call anymore (step 1).  I also don't see the large ldap call any longer (step 4).  In addition, all of my roles are mapped as expected.
I'm not sure if all of these changes are related to your latest commit, or if I missed something along the way, that I picked up in the latest 946 branch.  At any rate, looks good!
I'll continue to test it today and will let you know if I see any other issues.

@rja1 Good to know, I'm able to resolve what you asked for.

Merging this if no more discussion.

@prabhjyotsingh is it going to be merged to 0.6-branch, too?

I think we should as this is to do with AD auth.

@prabhjyotsingh
My Zeppelin version is <IP_ADDRESS>.5.0.0-1245
Is this version supposed to have your fix ? I am facing the same issue and am wondering if I am missing your fix or something else.
Please let me know.

@ekantheshwara  yes, this version should have the above-mentioned fix.
Could be a configuration issue, if you can share what exactly are you trying with i.e. is it with file based auth, LDAP or AD.
Also you can look into log file zeppelin-{machine-name}-{machine-id}.local.log for more logs when you login, with something like this ({qtp1846406218-26} LoginRestApi.java[postLogin]:115) - {"status":"OK","message":"","body":{"principal":"hr1","ticket":"98569477-5809-43c6-acb4-7b22e78d7541","roles":"[admin]"}}
If you see "roles":"[admin]" means user hr1 is assigned to role->admin in this example, but if "roles":"[]" i.e. it is empty, then it means there if problem with configuration.
Here is a doc to help you out http://zeppelin.apache.org/docs/0.6.1/security/shiroauthentication.html.

@prabhjyotsingh
Thanks a lot for your response.
I am using AD and the authentication is working fine. I have a user User1 who is a member of AD_Group1 which is associated with the "admin" role in Shiro. I have a dashboard for which I have configured AD_Group1 as reader, writer and owner.
When I login as User1 and try to access the dashboard, I am getting the message "But the user User1 belongs to: [User1]". Clearly, Zeppelin is not aware of the group membership of the user.
Can you please advise what could have gone wrong here ?

Sounds like activeDirectoryRealm.groupRolesMap = "CN=aGroupName,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"group1" not configured correctly.
I would recommend

configure it something like activeDirectoryRealm.groupRolesMap = "CN=admin,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"admin","CN=finance,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"finance","CN=hr,OU=groups,DC=SOME_GROUP,DC=COMPANY,DC=COM":"hr"
Just confirm with your AD admin, regarding what all users belongs to what all groups.
If you are still unsure about what user belongs to what group, set you log4j to debug mode and grep for this https://github.com/apache/zeppelin/blob/v0.6.0/zeppelin-server/src/main/java/org/apache/zeppelin/server/ActiveDirectoryGroupRealm.java#L198. This should give you all details.
In my case, there were these three groups i.e. admin, finance, and hr.
After the [main] section and before [urls] make sure you have [roles] defined something like this.

  [roles]
  admin = *
  finance = *
  hr = *

@prabhjyotsingh
You are right. The log shows:
WARN [2017-04-10 16:37:27,945] ({qtp1577213552-13} LoginRestApi.java[postLogin]:111) - {"status":"OK","message":"","body":{"principal":"<user_id>","ticket":"f7e3dc96-3aea-43ab-9b5a-5d5020eb56fb","roles":"[]"}}
The groupRolesMap property is set as shown:
activeDirectoryRealm.groupRolesMap = "CN=APPADMIN,OU=Managed,OU=Groups,DC=testcore,DC=test,DC=dir,DC=,DC=com":"admin"
I have double checked and the group DN is correct. The roles and the url sections in shiro are as shown below:
[roles]
admin = *
[urls]
/api/version = anon
/api/interpreter/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
#/** = anon
/** = authc
What else could have gone wrong ?

@prabhjyotsingh
This is my complete shiro config:
[users]
admin = password1
Sample LDAP configuration, for user Authentication, currently tested for single Realm
[main]
activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm
activeDirectoryRealm.systemUsername = user1
activeDirectoryRealm.systemPassword = pwd
#activeDirectoryRealm.hadoopSecurityCredentialPath = jceks://user/zeppelin/zeppelin.jceks
activeDirectoryRealm.searchBase = DC=testcore,DC=test,DC=dir,DC=org,DC=com
activeDirectoryRealm.url = ldaps://testcore.test.dir.org.com:636
activeDirectoryRealm.groupRolesMap = "CN=APPADMIN,OU=Managed,OU=Groups,DC=testcore,DC=test,DC=dir,DC=org,DC=com":"admin"
activeDirectoryRealm.authorizationCachingEnabled = true
activeDirectoryRealm.principalSuffix = @testcore.test.dir.org.com
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
securityManager.realms = $activeDirectoryRealm
[roles]
admin = *
[urls]
/api/version = anon
/api/interpreter/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
#/** = anon
/** = authc

Can you run ldapsearch like
ldapsearch -D "user1" -w pwd -H ldaps://testcore.test.dir.org.com:636 -b "DC=testcore,DC=test,DC=dir,DC=org,DC=com" -s sub "(&(objectClass=*)(userPrincipalName=user1))"
and look for key "memberOf", this should tell you to which all groups "user1" belongs.
Alternatively, set log level to debug, then try to login into UI and look for string Groups found for user [<<user_id>>]:  this will also give the same group information about what group this user belongs.

@prabhjyotsingh
I set the log level to debug and checked the "Groups found for user".  I could definitely see the group that has been configured as "admin" in shiro. Also, the [urls] section is effective i.e. if I login as a different user who is not a member of the group defined as "admin", then I can not see the interpreter, configurations etc.
The problem is only with the Note permissions. I have tried configuring the "AD group name", "full DN of the AD group" and also the "corresponding role in shiro" as the Readers of the Notebook. But when I try to access the Notebook, all I get is "But the user user1belongs to: [user1]".
Another observation:
While setting the note permissions, I am able to search the AD users but not the AD groups. So, I am just entering the AD group name and saving it even though the search does not resolve it. The search does not resolve even if I enter the full group DN or the role name. Any idea why I am not able to look up the group names in Note permissions section ?

@prabhjyotsingh
I dont see a call made to AD to check the group membership when a Notebook is accessed. These are the logs that I see when I access the Notebook:
ssion,outgoing=org.eclipse.jetty.websocket.server.WebSocketServerConnection]
DEBUG [2017-04-11 10:34:39,042] ({qtp1170794006-15} AbstractEventDriver.java[incomingFrame]:103) - incomingFrame(TEXT[len=126,fin=true,rsv=...,masked=true])
DEBUG [2017-04-11 10:34:39,042] ({qtp1170794006-15} NotebookServer.java[onMessage]:106) - RECEIVE << GET_NOTE
DEBUG [2017-04-11 10:34:39,042] ({qtp1170794006-15} NotebookServer.java[onMessage]:107) - RECEIVE PRINCIPAL << user1
DEBUG [2017-04-11 10:34:39,042] ({qtp1170794006-15} NotebookServer.java[onMessage]:108) - RECEIVE TICKET << b2512330-0a0f-4631-9913-c688d1c9d7f2
DEBUG [2017-04-11 10:34:39,043] ({qtp1170794006-15} NotebookServer.java[onMessage]:109) - RECEIVE ROLES << []
INFO [2017-04-11 10:34:39,043] ({qtp1170794006-15} NotebookServer.java[sendNote]:423) - New operation from <IP_ADDRESS> : 49895 : user1 : GET_NOTE : 2CC4Z4DEX
INFO [2017-04-11 10:34:39,043] ({qtp1170794006-15} NotebookServer.java[permissionError]:411) - Cannot read. Connection readers [user1]. Allowed readers [APPADMIN]
DEBUG [2017-04-11 10:34:39,044] ({qtp1170794006-15} WebSocketRemoteEndpoint.java[sendString]:385) - sendString with HeapByteBuffer@669d45be[p=0,l=235,c=235,r=235]={<<<{"op":"AUTH_INFO"...us","roles":""}>>>}
However, when I access the "interpreter" or "configurations" url, I get the below logs which explain why the config is effective for URLs:
DEBUG [2017-04-11 10:38:58,087] ({qtp1170794006-16 - /api/interpreter/setting} ActiveDirectoryGroupRealm.java[getRoleNamesForUser]:286) - Groups found for user [d786090]: [CN=APPADMIN,OU=Managed,OU=Groups,DC=testcore,DC=test,DC=dir,DC=org,DC=com]
DEBUG [2017-04-11 10:38:58,087] ({qtp1170794006-16 - /api/interpreter/setting} ActiveDirectoryGroupRealm.java[getRoleNamesForGroups]:316) - User is member of group [CN=APPADMIN,OU=Managed,OU=Groups,DC=testcore,DC=test,DC=dir,DC=telstra,DC=com] so adding role [admin]
This makes me think that your fix may not be available in the Zeppelin version that I am using. Can you please let me know if there is any other way of verifying if your fix is available in my Zeppelin ?
Looking forward to your response.
Regards,
Ekantheshwara

@prabhjyotsingh
Is there any other way of verifying if the fix is available in my version of Zeppelin? I dont see a call made to AD to check the group membership when a Notebook is accessed.
Please suggest. Your inputs will be really helpful.
Thanks,
Ekantheshwara

@prabhjyotsingh
The issue got resolved. I had to take out the line "securityManager.realms = $activeDirectoryRealm" from my config and that resolved the issue. I dont see anything wrong in the line I took out. However, I believe this is an optional config.

@ekantheshwara this sounds like a bug, can you create a JIRA, will try to address it.

@prabhjyotsingh
I have created one:
https://issues.apache.org/jira/browse/ZEPPELIN-2550

FYI...  I have been having similar issues and above and until reading this thread in detail did I realize it is searching against userPrincipalName and not sAMAccountName which is a better option.
Above it is mentioned the builtin user filter/subsearch is "(&(objectClass=*)(userPrincipalName=user1))"
However, if a user ever runs ktpass on AD to export a keytab with a different principal name, the userPrincipalName can end up differing from sAMAccountName.
It does not make sense to authenticate users via sAMAccountName successfully, then search for them again using a different AD property userPrincipalName... especially when these can differ.  userPrincipalName is set for Kerberos which is not always gonna to be consistent with LDAP logins which is what AD provider is doing.
Spent a lot of time scratching my head!  Thanks for the detailed post above about the search filter.  I'm quite certain my case where sAMAccountName differs from UPN is the exception to the rule but there is no reason not to match these up just in case.
Best Regards

Well through some more testing, I've found that it it will accept logins as either the userPrincipalName (without the realm) or the sAMAccountName.  This true if the principal suffix is NOT set in shiro.
I.E.
If the object has these two defined in AD:
sAMAccountName=userexample
<EMAIL_ADDRESS>AND shiro.ini does not have the principal suffix:
#activeDirectoryRealm.principalSuffix = @REALM.COM
Then I am able to login to the UI with either userexample or userex/hostname1.domain.com as the username.
If the principal suffix is enabled:
activeDirectoryRealm.principalSuffix = @REALM.COM
Then, I cannot login to the UI with any form of userex/hostname1.domain.com but I can login with userexample.   Logging in with userexample is useless because<EMAIL_ADDRESS>will not be found for group mappings by the UPN search filter.
Adding all this for clarity... Zeppelin ActiveDirectoryGroupRealm does not explicity authentication the user using sAMAccountName but it does permit it.  It will also accept UPN.  In most cases, these match.  In some cases, they may not.
The more I look at this, it is becoming apparent that as an AD provider and not an LDAP provider, they are assuming that running ktpass for a keytab as we have done is not a valid user for this provider.
Hopefully, this info is at least helpful if someone else has this same odd config!

Well... I'm back again.  :)
Apparently, Office 365 requires that userPrincipalName be changed to the user's routable email address in order for it to be used in any cloud environments.  Company-wide I have found that where I am currently working, no sAMAccountNames match userPrincipalNames.  Further, no usernames match the new userPrincipalNames set for compliance with Office 365.
So, the current design of the provider will implicitly not work with AD going forward.
https://blogs.technet.microsoft.com/askpfeplat/2013/09/01/office-365-single-sign-on-how-to-handle-different-userprincipalname-upn-values/

@ChrisMcVey Thank you for providing so much inside, is it possible for you to create a JIRA, with if possible some steps to reproduce, or even dump of these comments will do, and will try to resolve.

@prabhjyotsingh i was strugling few days as my groups were not honored and found this thread :)
I`m having issues described by @ChrisMcVey - using microsoft AD, UPN is not the same as username + activeDirectoryRealm.principalSuffix
I was not able to find any follow up, is there anything i can do to help solve this?


Benefits of matrix versus languages separated by commas

I have noticed that codeql.yml action is using matrix strategy and splits the action into multiple runs.
I'm using comma separated list of languages instead. It seems to be a batter approach for more complex builds
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: csharp,javascript

Are there any pros and cons to matrix strategy vs. comma separated list of languages?

The matrix strategy will run the jobs in parallel and should therefore be faster.
The comma separated list approach runs all the analyses in the same job. This can be handy for complex multi-language builds that are hard to split into separate parts per language. Note that this is only important for compiled languages such as C/C++, C#, Java, and Go.
Note that while the matrix strategy is faster, it tends to cost a little more compute time. For example if you have two languages, both take 4 minutes to analyze, then the "comma-separated-list" approach will take 8 minutes and cost 8 compute minutes. For the matrix case there is a bit of overhead of say 1 minute, so in this case the time to analyse will be 5 minutes, but the compute cost will be 10 minutes (two concurrent jobs of 4+1 each).
The overhead of parallel builds tends to be small and the benefit of quicker analysis time (less time waiting for a PR check) usually outweighs the higher cost. Therefore I'd recommend the matrix approach in most cases.

I had same questions, and I did some experiments. Hopefully it can help people who come here in future!
Experiment 1: matrix with fail-fast: false (personally I like this one 😃)
    strategy:
      fail-fast: false  # Note here is false, by default it is true if not provided
      matrix:
        language: [go, java, javascript, python, ruby]
    steps:
      # ...
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}

If one failed, the rest of them still can succeed

Experiment 2: matrix with default fail-fast: true
    strategy:
      matrix:
        language: [go, java, javascript, python, ruby]
    steps:
      # ...
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}

When one failed, the rest of jobs that not finish will be cancelled.

Experiment 3: languages separated by commas
    steps:
      # ...
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: go, java, javascript, python, ruby

If any fail, you won't be able to know which language caused failure until check the log.


add helm to microk8s.status command

Hi, this is a fix for #699 so helm shows up the the .status command. I built a development snap using the contribution instructions and it was working as expected.

I held off adding it to the addon array on L:34 because it wasn't possible to determine the helm install status by keying off the namespaces or clusterroles. There may be another kubectl command that shows the status that I'm not aware of though.

Maybe adding the ${SNAP_DATA}/bin/helm as part of the array then an additional condition to find the file based on the value of the array.
Like this.
addon[helm]="${SNAP_DATA}/bin/helm"

Just my 2 cents.

Nice, that works and keeps the code organized a bit better. I added a file check for helm in the addon for loop.

@greenyouse great! 👍

LGTM +1. Thank you @greenyouse for your work and @balchua for the code review.


blue and red button do not depress after interacting with it

also when i press blue button after yellow one which is supposed to be correct the camera shakes?

same issue as the spikes, audio manager created from mainmenu


Scripts restart each time program is recognized even while still in window

Can we have scripts not completely restart when they lose detection? In the scripts themselves (pick-up/resume points..?) or in the detection algorithm?
JB via BF: Does each program call a new instance? Can you have the same program twice? This would assist with a “resume” function
Answer: Not at the moment. Can tear paper apart and it continues to recognize it

To address this, I believe some changes have been made to the Board Model. I know we've added protections for when papers are lost, so they can be reintroduced smoothly. I believe this is also related to #98.
@jessegreenberg , can you comment on the former? Do we have any tactics for programs continuing to run even when detection is lost? I am thinking the PhET sim in an iFrame example.

Yes - If you want to do that you can write the onProgramAdded listener to only add the component once on the first detection, and skip implementing the onProgramRemoved listener which would usually remove the component/iframe/whatever.

This was handled in many ways during the evolution of Display (formerly Board) and Creator. No longer relevant. Closing.


[SPARK-36664][CORE] Log time waiting for cluster resources

What changes were proposed in this pull request?
Keep track of and communicate to the listener bus how long we are waiting for execs to be allocated from the underlying cluster manager.
Replaces previous PR with GHA issues (  #35172 ) and WIP PR https://github.com/apache/spark/pull/34650  and #35881
What changes were proposed in this pull request?
Keep track of and communicate to the listener bus how long we are waiting for execs to be allocated from the underlying cluster manager.
Replaces previous PR with GHA issues (  #35172 ) and WIP PR https://github.com/apache/spark/pull/34650
Why are the changes needed?
Sometimes the cluster manager may choke or otherwise not be able to allocate resources and we don't have a good way of detecting this situation making it difficult for the user to debug and tell apart from Spark not scaling up correctly.
Does this PR introduce any user-facing change?
New field in the listener bus message for when a executor is allocated.
How was this patch tested?
New unit test in the listener suite.
Why are the changes needed?
Sometimes the cluster manager may choke or otherwise not be able to allocate resources and we don't have a good way of detecting this situation making it difficult for the user to debug and tell apart from Spark not scaling up correctly.
Does this PR introduce any user-facing change?
New field in the listener bus message for when a executor is allocated.
How was this patch tested?
New unit test in the listener suite.

Test link - https://github.com/holdenk/spark/actions/runs/2163614326

Yeah I'll merge it today.


Cannot get theme in ReactDOM.render method

Environment
React > 16.3
styled-components: >5
Reproduction
const div = document.createElement('div');
document.body.appendChild(div);

const A=styled.div`
color:${props=>props.theme.colors.primary}
`
ReactDOM.render
            aaaa,
            div,
  );

TypeError: Cannot read property 'primary' of undefined

I have wrapper the ThemeProvider in app, but cannot get theme when rendering components
Is there any solution to it?

In the above code sample you have not wrapped anything above Awith a ThemeProvider. A provider must always be above the element that uses it but in the same React render root. When you call render in any capacity, that's a new tree. In your example A is the topmost element.
For questions please go to Stackoverflow as this isn't a great place to answer these kinds of questions ✌


Fix for issue #45

Hi @haebler, I would not like to change this behaviour as it is possible to do this already by supplying AuthNone from outside as the first method to be tried.


Just installed, got Warning

"Target file is not found, please ensure extension settings is correct."
And it doesn't work :(

Hi, what 's your language?

I didn't think I was trying any specific language.

This's a part of my user settings, it's used to match lua file.
    // Set which type you want to use peek. it's language id, not extension.
    "quickOpenFile.peekLanguages": [
        "lua"
    ],

    // Set which file extension you want to include, ** is any extension.
    "quickOpenFile.extensionInclude": [
        "lua"
    ],

    // Set which folder you want to exclude.
    "quickOpenFile.folderExclude": [
        "node_modules",
        ".vscode"
    ],

    // Auto add suffix when search file(not allow peek), ** is match any suffix.
    "quickOpenFile.suffixList": [
        "_C",
        "_S"
    ]

Now, I understand your question.  I just installed it and tried to instantly use it from the default shortcut and the command pallete.
I was hoping it just worked with anything open.  It would just be slower if there were a lot of files.

Sorry, I misunderstood what this extension did.  I'll close this.

:)


Correct documentaiton about SubscriptionStatus callback signature.

When the subscriptions are run, value and old_value are always passed in by keyword, not positionally. This happens in the ophyd layer and is not dependent on the control layers (pyepics, caproto) so we can be sure of it. Thus, their order does not matter.  This created a recent concern when it was discovered that some callbacks had signature f(value, old_value, **kwargs) while other had signature f(old_value, value, **kwargs). The documentation should be clear on this point, and might as well require f(*, value, old_value, **kwargs) to be future-proof against some caller than attempts to pass in arguments positionally.

Thanks to @jklynch and @johnsinsheimer for flagging this problem.


Add API for background preparation in SourceKit-LSP

Add an API to get the name of a target from SourceKit-LSP

We will need this API to prepare a target for indexing.

Add an API to get all the targets in a build description / modules graph in a topological order

We need this for background preparation for indexing so that we can prepare and index lower-level targets first.

@swift-ci Please test


Fairseq breaks AbLang installation with python > 3.8

See issue here: https://github.com/pytorch/fairseq/issues/3535
Using Python 3.8.12 I was able to install ablang via pip, but Python 3.9 and 3.10 leads to the error described in the issue linked above.

For conda users, there are a few open PRs aiming at fixing this. In particular this one seems to work.
Until they get accepted, a workaround is to use sdvillal::fairseq as a dependency in your environment (linux and macos only).

Sorry for the long wait! fairseq keeps introducing different dependency issues. To resolve this, we have decided to extract the code from fairseq that we use, allowing us not to install fairseq anymore 8f901e9.


containerized-tests: Failing to pull the image

Describe the bug
The containerized-tests job sometimes failing to pull the image, this is not 100% hit, as it was successful with other concurrently run items
+ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no<EMAIL_ADDRESS>'cd /opt/build/go/src/github.com/ceph/ceph-csi && make CONTAINER_CMD=podman ENV_CSI_IMAGE_NAME=registry-ceph-csi.apps.ocp.ci.centos.org/ceph-csi .devel-container-id'
Warning: Permanently added 'n1.dusty.ci.centos.org,<IP_ADDRESS>' (ECDSA) to the list of known hosts.
cephcsi image settings: registry-ceph-csi.apps.ocp.ci.centos.org/ceph-csi version canary
[ ! -f .devel-container-id ] || podman rmi registry-ceph-csi.apps.ocp.ci.centos.org/ceph-csi:devel
podman build  --build-arg BASE_IMAGE=ceph/ceph:pacific -t registry-ceph-csi.apps.ocp.ci.centos.org/ceph-csi:devel -f ./scripts/Dockerfile.devel .
STEP 1: FROM ceph/ceph:pacific
Completed short name "ceph/ceph" with unqualified-search registries (origin: /etc/containers/registries.conf)
Error: error creating build container: 3 errors occurred while pulling:
 * Error initializing source docker://registry.access.redhat.com/ceph/ceph:pacific: Error reading manifest pacific in registry.access.redhat.com/ceph/ceph: name unknown: Repo not found
 * Error initializing source docker://registry.redhat.io/ceph/ceph:pacific: unable to retrieve auth token: invalid username/password: unauthorized: Please login to the Red Hat Registry using your Customer Portal credentials. Further instructions can be found here: https://access.redhat.com/RegistryAuthentication
 * Error initializing source docker://ceph/ceph:pacific: Error reading manifest pacific in docker.io/ceph/ceph: manifest unknown: manifest unknown
make: *** [Makefile:195: .devel-container-id] Error 125
script returned exit code 2

https://jenkins-ceph-csi.apps.ocp.ci.centos.org/blue/organizations/jenkins/containerized-tests/detail/containerized-tests/1106/pipeline/48/

This seems to happen when there is a rebase of the ceph version in build.env. The tests where this occurs moves to Pacific, so the :test and :build container images need to be rebuild.

@pkalever I dont see something to be fixed here. If agreed, can we close this issue ?

We moved to docker.io/ceph/ceph:v16 as base image, so things are working fine.


INSTALLATION FAILED

Error: INSTALLATION FAILED: execution error at (jitsi/templates/web-deployment.yaml:8:23): One of PUBLIC_URL or ingress.hosts must be provided
some igress host error
please help me anybody

ingress:
  annotations: {}
  enabled: true
  extraLabels: {}
  extraPaths: []
  hosts: ["meet.example.com"] //Change this line

Hopefully its helps


[Feature Request] Support logging the original prisma client query for better debug experience

Enable Prisma query log only shows the raw SQL.  It would be more convenient to show the original query like the one below:
{{"OR":[{"author":{"is":{"id":"clgqvce550000t23x6h3mwor9"}}},{"zenstack_guard":true},{"AND":[{"zenstack_guard":true},{"published":true}]}]}}'

supported by #490

Thank you!


Shift-Delete in vim's command mode isn't working as expected

When I enter command mode : in vim, and type something, then start deleting with shift pressed, it simply moves the cursor instead of deleting the characters. I've tested this with both alacritty and xterm-256color as my $TERM.
I'm curious why it works in insert mode, or generally everywhere else, just not in command mode. Other terminals don't seem to have this behavior.

I can't reproduce this in neovim, so I'd assume it's vim specific.
Do you get any different output when pressing shift+del in Alacritty vs a different terminal, when pressing ctrl+v to print the raw key escape?

FWIW I can repro in neovim.


GetHashedFileNameAsync/ImageCache error checking

It would help to  check for failure of this when objectToHash to not supported type. Right now the program crashed with no explanation. I had to get the source code version to debug. The program faults with argument null exception.

thanks for reporting it.
Let me have a look at it.

ImageFrame in V1.0 no longer uses ImageCache. Providing the Uri should load the image correctly.


Markdown support

I just started using Noto, it looks very flexible. BUT unfortunately I cannot underline nor highlight nor make bold text on my notes !!. Would it be possible to add this feature ??
Thx, HC

Maybe using markdown is the best choice for this Noto.

I think that markdown is powerful, but it is not well-suited for a touchscreen device.
It is easier to format text by touching format buttons. For example, a user may select a word, and then a menu pops up near the selection, and the popup menu shows options for bold, italic, strikethrough, font color, and font highlight. The user can tap the bold button, and achieves the desired result.
So I think that a popup format menu is better than markdown for elementary formatting purpose. Of course, markdown would be nice as an additional feature.

I think that markdown is powerful, but it is not well-suited for a touchscreen device.
So I think that a popup format menu is better than markdown for elementary formatting purpose. Of course, markdown would be nice as an additional feature.

Actually you can have both like quillpad or Markdown Editor do.
Markdown with all its feature and advantages would be a great addition for No to as long as we have a touchscreen friendly markdown toolbar.


Add option to inject a logging backend

[ ] Opetions will be passed on Mesh instantiation using the Option(*Mesh) pattern
[ ] Logging is defined as interface (API has to be defined)

Dropped as not task of the cells.


fix: alignment of images of contributors

What's changed, or what was fixed?

The alignment of the images along with the short brief description of the contributors wasn't aligned within the shorter screen width.

Fixes and aligns the images:

[ ] This has been reviewed and approved by (NAME)
[x] I have run npm test locally and all tests pass.
[ ] I have added the appropriate type-something label.
[x] I've staged the site and manually verified that my content displays correctly.

CC: @petele

@googlebot I signed it!


SC48v2 non conformance not detected

Hello,
I tested certificates from https://bugzilla.mozilla.org/show_bug.cgi?id=1735247 in ZLint 3.3.0 and no issues were detected.

See https://github.com/zmap/zlint/pull/635

Addressed in #635


cpuModel and cpuPlatform

Type

[x] Functions: $cpuModel and $cpuPlatform

Description
More functions for $cpu! 2 functions returning Cpu model and Cpu Platform...

i deleted an old pr. please ignore it xd

ur parse.js has conflicts
did u added a old patch?

ur parser.js has conflicts
did u added a old patch?

mm no, i used the latest patch

Yes, now indeed conflicts are resolved.


Update 2_resource_owner_passwords.rst

Hi @swinterrowd, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, DNFBOT;

I am not sure I understand - is this change really needed?


[TODO] Chapter 14 <- Lecture 10: Orchestration

~1. Write a notebook with a formal and better introduction to Langchain~
2. Include both summarisation ~and RAG~
3. ~Add a separate notebook covering agents, tool use and ReAct~ created #19

I've already done the parts which are strikethrough

Closing this in favour of #47


Unable to see some of  view in recording on dashboard.

Android SDK: 33
Integration :

build. gradle file
 implementation 'com.microsoft.clarity:clarity:2.2.0'
Application File

private void initMicrosoftClarity() {

        ClarityConfig config = new ClarityConfig(
                "lq5a8lt***",
                null, // Default user id
                LogLevel.Verbose,
                false, // Disallow metered network usage
                true, // Enable web view capturing
                Collections.singletonList("*"), // Allowed domains
                ApplicationFramework.Native,
                Collections.emptyList(), // Allowed activities
                Collections.emptyList(), // Disallowed activities (ignore activities)
                false, // Disable on low-end devices
                null // Maximum allowed daily network usage in MB (null = unlimited)
        );

        Clarity.initialize(getApplicationContext(), config);
    }

Issue :

I'm not able to see WebView preview in the recording
SS of Dashboard:

Actual Mobile SS:

I'm not able to see the VideoView (Exoplayer) preview in recording
SS of Dashboard:

Actual Mobile SS:

I'm not able to see proper MyCustomView (Canvas and runtime view) Preview in the recording
SS of Dashboard:

Actual Mobile SS:

Hi, Team
Any update on this?

@axitasavani Can you try upgrading your SDK version and see if this has been resolved? are these views jetpack compose views?


env.GITHUB_WORKSPACE evaluated to be null

Hi,
The example your provided do not work. ${{env.GITHUB_WORKSPACE}} evals to null. See Context and Environment variable. Should use ${{github.workspace}} instead.

Hi,
thank you for your suggestion. I've changed the readme accordingly :)


Firefox: Always opening new tab when logged in

Seeing on firefox that when logged into an account clicking download button will always open a new tab. If i logout then downloads work properly. Seems to be working fine in chrome both logged in and out

This is actually a fallback that I had to add because TikTok appears to block some fetch requests, resulting in a 0 byte download if it were to be force-downloaded. I haven't been able to figure out exactly why this happens, but at least in my experience, it can happen when multiple requests are fired in a row (it never really happens on the first download, at least for me).
I'll continue to see if I can find a way to fix this, but as of right now, I haven't found a good solution.

The addon should use the API method downloads.download now, so downloading is a lot more stable now. Fallbacks are still present because Manifest V3 is a bit buggy, but the issue should be mostly gone.


Add to v3 assembly instructions step that includes taking off raspberry pi to attach wifi cable

Added in explanations and pictures to show this step.  PR #177


Progress indicator is needed in mesh tagger derivative

It takes about 10 - 30 seconds of the viz to appear ( on my machine ). We need some sort of progress indicator.

@jourdain Looks like you just added it?

yep, pushed a spinning thing

@jourdain Could we center it on the screen?

I guess we could, but will need Tristan expertise in CSS to do so.


Update dependencies

 copy-webpack-plugin       ^9.0.0  →    ^9.0.1
 events                    ^3.2.0  →    ^3.3.0
 html-webpack-plugin       ^5.3.1  →    ^5.3.2
 http-server              ^13.0.0  →   ^13.0.2
 lit-element               ^2.4.0  →    ^3.0.1
 lit-html                  ^1.3.0  →    ^2.0.1
 memfs                     ^3.2.0  →    ^3.3.0
 mineflayer                ^3.3.3  →   ^3.11.2
 mineflayer-pathfinder     ^1.6.1  →    ^1.8.0
 mocha                     ^9.0.0  →    ^9.1.2
 standard                 ^16.0.3  →   ^16.0.4
 three                   ^0.127.0  →  ^0.133.1
 webpack                  ^5.11.0  →   ^5.58.1
 webpack-cli               ^4.2.0  →    ^4.9.0
 webpack-dev-middleware    ^5.1.0  →    ^5.2.1
 webpack-dev-server        ^4.0.0  →    ^4.3.1
 webpack-merge             ^5.7.3  →    ^5.8.0
 workbox-webpack-plugin    ^6.1.2  →    ^6.3.0

Also added unspecified but used dependencies such as @tweenjs/tween.js (breaks build using other package managers beside NPM).

does it still work after that?

Yes, but lit-html and lit-element are going to be deprecated: https://lit.dev/docs/releases/upgrade/#use-the-lit-package


3.2.2rc1 sometimes opens project list instead of playing project

Godot version:
3.2.2.rc1.official
OS/device including version:
Windows 10 (19041.329), nVidia GTX 1060, GLES3
Issue description:
Sometimes, when I hit F5 to play the project (start its main scene), instead of doing that, Godot will open the project list (the one that typically appears when starting up the editor.)
Steps to reproduce:
This appears to happen randomly, and I have not been able to find a way to reliable reproduce it. To make things worse, I haven't been able to provoke the issue at all with a blank (except for an empty 2D scene) project. My guess is that this is somehow related to scene loading, and the bigger your project gets, the more likely you are to encounter this issue. (Unfortunately, I can't attach my current game project here.)
I will try some other projects to see if I can find a way to reliably reproduce the issue.
Edit: I haven't done any significant work with the 3.2.2 betas, so I can't say if this is a regression new to RC1. But I did work with 3.2.1 for a while and never encountered the issue there.

Duplicate of #28036.

Oof, I really tried finding an existing issue, but apparently I didn't try hard enough. ;-) Thanks and sorry for the trouble!

No worry, it was not easy to find unless you knew that it's there :)


small tweaks to make it easier to hop in and develop…

…or run the example flask server

Not sure why it dropped my comments here twice after I reviewed... This is a bit confusing. Sorry about that! I wonder if I did something wrong? 😺


ffmpeg install not recognized

I installed ffmpeg on linux 14.04 server using this guide: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
ffmpeg appears to be running fine.
When I enter command "which fmpeg" I receive response: /home/myusername/bin/ffmpeg
When I run chromecastize, I receive an error that ffmpeg is not installed as follows:
avconv (or ffmpeg) is not available, please install it
Forgive me, as I am noob.  Don't know if this is the right way to report this, or ask for help.  Perhaps my install of ffmpeg needs to be moved somewhere else?

You have ffmpeg installed in your user space. Are you also running chromecastize with the same user?

Closing for lack of response.


Implement new Podcasts endpoints

https://developer.spotify.com/community/news/2020/03/20/introducing-podcasts-api/

Implemented in 3.4.0


wr.timestream.query is very slow due to large number of pagination requests

my call to query api
wr.timestream.query(query_str)

took 50 seconds to return about a dataframe of size 6MB containing 80K records.
I can see that a majority of the 50 seconds is taken up by dispatching a large number of paginate request one after another.
I have tried to change the pagination config from default value below.
{ "MaxItems": 10, "PageSize": 10, "StartingToken": "…"}

But I am unable to work out what value should "StartingToken" be.
I tried to set "MaxItems" = 100,000 and "PageSize" = 1000 without specifying "StartingToken", but only 20K records get returned and the entire call still took close to 40 seconds.
Question:
How should I make large query faster by i) correctly increase page size or ii) parallelize request for different pages ?

@kukushking
my usecase ( some global analytics ) can't work with partial result.
Looks like the underlying service timestream is not suitable for this query pattern ( where i need to query hundreds of MB's worth of data quickly )
I am considering periodically coping raw data from timestream to some other AWS data store service which supports fast & efficient dumping of large amount of data.  For this, do you have any suggestion ?
The dumpest idea would be just to pull raw data from timestream and dump it onto csv and put it on S3.

@NakedKoala If you can't work with partial results try to retrieve by page and then pd.concat the data. Hundreds of MBs should still be OK with API, that is only my hyphothesis regarding the limits (also It's row size that is limited to 1MB, not the entire response size)


window.opener explodes

      typeof(window) !== "undefined" && window.opener !== null && typeof window.opener.GLOBALS !== "undefined"
          ? window.opener.GLOBALS

This code blows up if you open gmail from a link on another domain with a cross-origin request denied error.

Sorry about the late response.
While I'm sure what you say are true, I'm curious about what use-case we are talking about here. What kind of useful interaction against gmail is it which fails due to this specific code?
Can you outline in greater detail a testable scenario we can look into?

Adding a "send via gmail" button to another page, having someone click it and be brought to gmail compose window. Just add a link that goes to gmail from another domain and click it.

I've created a page like this:

    Same window
    New window

Using this code is not enough for me to reproduce, but I'm using NodeJS-style loading using require and bundling.
Have you tried that? If not, could you try that?

@josteink Try navigating to Gmail using window.open([ ... ]) after a click event

Oh I understand what you mean now. Sorry about being slow.  I'm not sure why this happens though: this part of the code clearly probes the current window before checking its opener:
https://github.com/KartikTalwar/gmail.js/blob/master/src/gmail.js#L41-L46
I really can't see any reason for this to fail, if loading gmail in a regular tab doesn't.
I'll try to reproduce the error condition and if so, see if there's any viable workaround.

Because the opener of the current window is a different origin.

I'm sorry.
If you re-read my reply, you'll see that I cannot reproduce it and I cannot understand why it happens:

My code to reproduce is hosted on a different domain, so that alone does not seem to be enough.
window.GLOBALS is probed long before window.opener.GLOBALS, so whatever window.opener is and what origin it has really shouldn't matter.
And as I've now asked several times: How do you load Gmail.js? Do you add a script-tag and probe for it to complete, or do you use NodeJS-style require() statements in your code?

Can you produce more complete code-samples to reproduce? Maybe a complete POC github repo?

Is this still an issue for you? If so, can you provide some feedback to my questions?
If I receive no feedback on this issue in the near future, I will assume it's no longer something which needs to be resolved, and will close it.

We are loading gmail.js in a Chrome extension. I'll see if we can provide a complete example.

@josteink we're using webpack to compile everything down into a single JS file that's loaded as a background script in a chrome extension.

Can you provide a sample repo which demonstrates the problem consistently?
Basically something like one of the existing boilerplate-repos?

Closing issue due to lack of activity. Please reopen if needed.

There’s a bit of context I need to regain here, not to mention issues with understanding the scope of the change.
I’ll try to take a look at it Monday, but if you want to outline why you are changing what you do and in what ways it helps prevent this error in the meantime, it will probably help me getting this reviewed a bit more quickly.

@josteink, short answer - I've added an access check for window.opener, and if it fails gmail.js won't try to access it again. This prevents failures on initialization phase.
Now with more context - you can open Gmail from some other page, i.e. from G Suite hub. In this case, you'll have window.opener from another origin, and when you try to read some properties from it, you'll have an error because of security restrictions. The point of my fix is to determine, if we can access window.opener, and use it only in this case.

Sorry about the slow response. Been down with a flue.

I've added an access check for window.opener, and if it fails gmail.js won't try to access it again. This prevents failures on initialization phase.

I guess this is fair enough and the simplest part of the fix to understand. What I find harder is following the chain of its consequences this simple chain leads to.

Now with more context - you can open Gmail from some other page, i.e. from G Suite hub. In this case, you'll have window.opener from another origin, and when you try to read some properties from it, you'll have an error because of security restrictions.

This is where I'm not so sure about what the right approach is. If we can't access window.opener from these contexts, there's a lot of stuff GmailJS wants to do which it can't do. To me. it seems like blowing up is the right thing to do!
What part of GmailJS are you using in these contexts, and do they actually work with your fix? That is... Are you actually fixing bugs, or are you moving them from initialization to invocation?
Any help to understand this use-case is greatly appreciated.

If we can't access window.opener from these contexts, there's a lot of stuff GmailJS wants to do which it can't do. To me. it seems like blowing up is the right thing to do!
I can't agree here. Access to window.opener is important when you pop out the message window - in this case we need to know the opener context to access "root" Gmail window. But if you came to root Gmail window from third-party resource, there's nothing useful (at least for gmail.js :)) you can get from its context.
What part of GmailJS are you using in these contexts, and do they actually work with your fix?
I am using get functions, they rely on XHR interceptor, which gets set up in api.tools.xhr_watcher, which tries to determine root window by looking for window.opener context data.
Are you actually fixing bugs, or are you moving them from initialization to invocation?
There's actually nothing we can fix, just because access to foreign window context is denied by browser security rules, and I think it's the right thing. We can handle this situation though, that's what I suggest in my draft change.
I can update the code to make the logic and variable naming more clear, if needed.

I can't agree here. Access to window.opener is important when you pop out the message window - in this case we need to know the opener context to access "root" Gmail window. But if you came to root Gmail window from third-party resource, there's nothing useful (at least for gmail.js :)) you can get from its context.

Ok. I get the difference now.
And I do agree: This should be fixed.


iOS Sim: Wire in launch arguments to simctl

@devoncarew : I am making engine side changes now.

lgtm


Add new json provider to log root stack trace elements

Hi 👋
I'm opening a draft for a new json provider.
It complements existing ones (ThrowableRootCauseClassNameJsonProvider, StackTraceJsonProvider, ...).
This provides details about the context of the exception, ie, it doesn't tell us that a NullPointerException occurred but rather that it occurred in MyClass.myMethod().
For example, MyClass.doSomething() calling MyOtherClass.doSomethingRisky() which throws an error will produce the following output.
{
   "root_stack_trace_element":{
      "class_name":"com.example.stacktraces.MyOtherClass",
      "method_name":"doSomethingRisky"
   }
}

Hi there. Is there any update on this?
This feature is pretty useful.


Correcting the ballerina version to SL Alpha 2 in java wrapper

Purpose

Change the Ballerina version used in java wrapper from SLP8 to SL Alpha 2.

Approach

Change the repository to access Alpha 2 in the maven build

Security checks

Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes
Ran FindSecurityBugs plugin and verified report? no
Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes

Related PRs

List any other related PRs
https://github.com/ballerina-platform/module-ballerinax-sfdc/pull/122

Test environment

Java JDK 11
SL ALpha 2

re-opening the PR


Pushing the Docker image using FMP gives access denied

Pushing the Docker image using FMP gives the following error:
services $ mvn fabric8:push -Pdocker
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] services
[INFO] name
[INFO] greeting
[INFO] webapp
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building services 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.34:push (default-cli) @ services ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building name 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.34:push (default-cli) @ name --
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/name]
0e014839ff57: Preparing
f14ef5f204ff: Preparing
85bb608219b7: Preparing
160c15b8811e: Preparing
498396e67e5c: Preparing
2e544e952df4: Waiting
e07090bc1b2d: Waiting
c8af1cb1c035: Waiting
64062a6d7af2: Waiting
dfb51d70f8af: Waiting
56939e74679c: Waiting
d1be66a59bc5: Waiting
[ERROR] F8> Unable to push 'arungupta/name' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] services ........................................... SUCCESS [  3.287 s]
[INFO] name ............................................... FAILURE [  1.382 s]
[INFO] greeting ........................................... SKIPPED
[INFO] webapp ............................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.026 s
[INFO] Finished at: 2018-02-13T15:22:44-08:00
[INFO] Final Memory: 35M/415M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.34:push (default-cli) on project name: Unable to push 'arungupta/name' : denied: requested access to the resource is denied  -> [Help 1]

Pushing the image using Docker CLI works fine.

@arun-gupta Help me with some env config so I can replicate this?  Seeing:
$ mvn fabric8:push -Pdocker
...
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.34:push (default-cli) on project services: Execution default-cli of goal io.fabric8:fabric8-maven-plugin:3.5.34:push failed: No <dockerHost> given, no DOCKER_HOST environment variable, no read/writable '/var/run/docker.sock' or '//./pipe/docker_engine' and no external provider like Docker machine configured -> [Help 1]

Seems like you don't have Docker running in your environment?
Make sure Docker is running using one of the methods explained at https://store.docker.com/search?type=edition&offering=community. This is how FMP identifies the Docker host.

@arun-gupta Nevermind; had just resetup Docker and forgot to add the group and permissions so I don't need to run as sudo.  Now replicated as you've got:
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.34:push (default-cli) on project name: Unable to push 'arungupta/name' : An image does not exist locally with the tag: arungupta/name  -> [Help 1]

Investigating; thanks.

Charting further progressing and now at the point where I've replicated Arun's same error:
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/name]
b18fc48878d6: Preparing
f14ef5f204ff: Preparing
85bb608219b7: Preparing
160c15b8811e: Preparing
498396e67e5c: Preparing
2e544e952df4: Waiting
e07090bc1b2d: Waiting
c8af1cb1c035: Waiting
64062a6d7af2: Waiting
dfb51d70f8af: Waiting
56939e74679c: Waiting
d1be66a59bc5: Waiting
[ERROR] F8> Unable to push 'arungupta/name' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]

What's required is running the steps 1) and 2) under Docker Images here: https://github.com/aws-samples/aws-compute-options  and then running  mvn fabric8:push -Pdocker instead of the 3) workaround noted

@arun-gupta So I'm understanding the problem correctly, wouldn't I expect access denied here because I should instead be pushing to alrubinger/name, on Docker Hub from the retagged image in my local repo?
https://stackoverflow.com/questions/41984399/denied-requested-access-to-the-resource-is-denied-docker
I'm currently not seeing the option to specify the namespace in https://maven.fabric8.io/#fabric8:push; does this correctly summarize the root cause, do you believe?

Hm, even when changing docker.repo:

OK, @arun-gupta : I got this passing by first docker login, then running mvn fabric8:push -Pdocker with docker.repo set to my own namespace.
Is this a valid workaround for you to use FMP - assuming you docker login first?

Thanks for diving into this @ALRubinger, really appreciated

It is absolutely a valid workaround, as long as it works in my setup. Here are the commands issued in my terminal:
services $ mvn -pl greeting fabric8:push -Pdocker
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.34:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/greeting]
d2cda8e485d1: Preparing
f14ef5f204ff: Preparing
85bb608219b7: Preparing
160c15b8811e: Preparing
498396e67e5c: Preparing
2e544e952df4: Waiting
e07090bc1b2d: Waiting
c8af1cb1c035: Waiting
64062a6d7af2: Waiting
dfb51d70f8af: Waiting
56939e74679c: Waiting
d1be66a59bc5: Waiting
[ERROR] F8> Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.623 s
[INFO] Finished at: 2018-02-15T04:54:07-08:00
[INFO] Final Memory: 34M/327M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.34:push (default-cli) on project greeting: Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
services $ mvn -pl greeting fabric8:push -Ddocker.repo=arungupta -Pdocker
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.34:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/greeting]
d2cda8e485d1: Preparing
f14ef5f204ff: Preparing
85bb608219b7: Preparing
160c15b8811e: Preparing
498396e67e5c: Preparing
2e544e952df4: Waiting
e07090bc1b2d: Waiting
c8af1cb1c035: Waiting
64062a6d7af2: Waiting
dfb51d70f8af: Waiting
56939e74679c: Waiting
d1be66a59bc5: Waiting
[ERROR] F8> Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.863 s
[INFO] Finished at: 2018-02-15T04:54:32-08:00
[INFO] Final Memory: 35M/418M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.34:push (default-cli) on project greeting: Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
services $ docker push arungupta/greeting
The push refers to repository [docker.io/arungupta/greeting]
d2cda8e485d1: Pushed
f14ef5f204ff: Layer already exists
85bb608219b7: Layer already exists
160c15b8811e: Layer already exists
498396e67e5c: Layer already exists
2e544e952df4: Layer already exists
e07090bc1b2d: Layer already exists
c8af1cb1c035: Layer already exists
64062a6d7af2: Layer already exists
dfb51d70f8af: Layer already exists
56939e74679c: Layer already exists
d1be66a59bc5: Layer already exists
latest: digest: sha256:1279e63b5696157f813cdc9345f0b111c4a41ff4b3027e486238a9c765c6b5ba size: 2828

As you can see, docker push works fine but fabric8:push, with or without docker.repo does not. And in my pom.xml, docker.repo is already set to arungupta.
What could be the discrepancy in my setup? How should I further debug it?

@arun-gupta I don't see where you issued docker login?  Is your manual docker push set up with some config to send along your credentials without having to use login first?
Also this differs from the command I used by passing -pl to the mvn commands.
I can look again on my machine in a few hours, but yeah, dock login before running mvn is what made this start to work for me.

@arun-gupta Yeah, check my traces below.  First I am not logged into docker locally:
[alr@tubescreamer ~]$ docker logout
Removing login credentials for https://index.docker.io/v1/

Then I attempt the same command you've provided me, which fails with familiar "requested access to the resource is denied" error:
✔ ~/business/jboss/git/aws-samples/aws-compute-options/services [alrubinger-fmp L|✚ 1]
16:34 $ mvn -pl greeting fabric8:push -Pdocker
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5-SNAPSHOT:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/alrubinger/greeting]
dbbebd36d1c7: Preparing
f14ef5f204ff: Preparing
85bb608219b7: Preparing
160c15b8811e: Preparing
498396e67e5c: Preparing
2e544e952df4: Waiting
e07090bc1b2d: Waiting
c8af1cb1c035: Waiting
64062a6d7af2: Waiting
dfb51d70f8af: Waiting
56939e74679c: Waiting
d1be66a59bc5: Waiting
[ERROR] F8> Unable to push 'alrubinger/greeting' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.682 s
[INFO] Finished at: 2018-02-15T16:35:00+00:00
[INFO] Final Memory: 34M/392M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5-SNAPSHOT:push (default-cli) on project greeting: Unable to push 'alrubinger/greeting' : denied: requested access to the resource is denied  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Then I run docker login:
✘-1 ~/business/jboss/git/aws-samples/aws-compute-options/services [alrubinger-fmp L|✚ 1]
16:35 $ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: alrubinger
Password:
Login Succeeded

Finally I try the same command again and the pushes go forward:
✔ ~/business/jboss/git/aws-samples/aws-compute-options/services [alrubinger-fmp L|✚ 1]
16:35 $ mvn -pl greeting fabric8:push -Pdocker
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- fabric8-maven-plugin:3.5-SNAPSHOT:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.3 as base / builder
[INFO] F8> The push refers to repository [docker.io/alrubinger/greeting]
dbbebd36d1c7: Preparing
f14ef5f204ff: Pushed
85bb608219b7: Pushed
160c15b8811e: Pushed
498396e67e5c: Pushed
2e544e952df4: Pushing     [==============================>                    ]  525.8kB/853kB
e07090bc1b2d: Pushed
c8af1cb1c035: Pushed
64062a6d7af2: Pushing     [>                                                  ]  1.078MB/203.1MB
dfb51d70f8af: Pushed
56939e74679c: Pushing     [=>                                                 ]  593.4kB/28.13MB
d1be66a59bc5: Pushing     [>                                                  ]    555kB/203.5MB

So the contents of my:
[alr@tubescreamer ~]$ cat $HOME/.docker/config.json
{
	"auths": {
		"https://index.docker.io/v1/": {
			"auth": "$$$$_REDACTED_BY_ALR_FOR_SECURITY_$$$$"
		}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/17.12.0-ce (linux)"
	}
}

@kenfinnigan version has a credstore variable pointing to osxkeychain, so we're wondering if FMP is not keychain-aware and respecting the login.

The fix I believe, based on a naked-eye view, is in the AuthConfig class of the Fabric8 docker-maven-plugin:
public AuthConfig(String credentialsEncoded, String email) {
        String credentials = new String(Base64.decodeBase64(credentialsEncoded));
        String[] parsedCreds = credentials.split(":",2);
        username = parsedCreds[0];
        password = parsedCreds[1];
        this.email = email;
        auth = null;
        authEncoded = createAuthEncoded();
    }

This does not support the keychain stuff used by Mac.  Credentials on Linux are simply stored as a Base64 encoded String of form username:password

Some workarounds as per https://dmp.fabric8.io/#authentication

Set system properties for docker.username and docker.password
Add a server to ~/.m2/settings.xml for docker.io

Underlying issue is here:
https://github.com/fabric8io/docker-maven-plugin/issues/946
@kenfinnigan to note a workaround for how to pass the username/password into the mvn CLI manually which will get you past this until a fix can be applied.

Added docker.username and docker.password properties to pom.xml. Here is the output:
services $ mvn -pl greeting clean package fabric8:push -Pdocker -Ddocker.password=<password>
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ greeting ---
[INFO] Deleting /Users/argu/workspaces/aws-compute-options/services/greeting/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ greeting ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/argu/workspaces/aws-compute-options/services/greeting/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ greeting ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /Users/argu/workspaces/aws-compute-options/services/greeting/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ greeting ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/argu/workspaces/aws-compute-options/services/greeting/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ greeting ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ greeting ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-war-plugin:2.5:war (default-war) @ greeting ---
[INFO] Packaging webapp
[INFO] Assembling webapp [greeting] in [/Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting]
[INFO] Processing war project
[INFO] Webapp assembled in [122 msecs]
[INFO] Building war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO]
[INFO] --- wildfly-swarm-plugin:2018.2.0:package (default) @ greeting ---
Resolving 49 out of 222 artifacts
[INFO] Repackaging .war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO] Repackaged .war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.30:build (default) @ greeting ---
[INFO] F8: Building Docker image in Kubernetes mode
[INFO] F8: Running generator wildfly-swarm
[INFO] F8: wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.2 as base / builder
[INFO] Copying files to /Users/argu/workspaces/aws-compute-options/services/greeting/target/docker/arungupta/greeting/build/maven
[INFO] Building tar: /Users/argu/workspaces/aws-compute-options/services/greeting/target/docker/arungupta/greeting/tmp/docker-build.tar
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Created docker-build.tar in 239 milliseconds
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Built image sha256:95ff9
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Removed old image sha256:071f9
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Tag with latest
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.30:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.2 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/greeting]
15282a8d2d15: Preparing
d98d8362fa14: Preparing
dd5ac05fcae7: Preparing
ad2afd14bd56: Preparing
38ed80498e01: Preparing
b6b9cebd2bc4: Waiting
44d468e487be: Waiting
ebe243934b99: Waiting
fef12de4c7da: Waiting
3bf2c105669b: Waiting
85c6e373d858: Waiting
dc1e2dcdc7b6: Waiting
[ERROR] F8> Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.644 s
[INFO] Finished at: 2018-02-15T11:24:38-08:00
[INFO] Final Memory: 55M/603M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.30:push (default-cli) on project greeting: Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Not sure why the system properties aren't working, as it's in the docs.
Apologies though as I didn't directly try those settings. However, I did have success with -Ddocker.push.username=<username> -Ddocker.push.password=<password> being passed to Maven.
I was looking for alternatives that didn't require password on command line

Even docker.push.password=<password> is not working:
services $ mvn -pl greeting clean package fabric8:push -Pdocker -Ddocker.push.password=<password>
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building greeting 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ greeting ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ greeting ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/argu/workspaces/aws-compute-options/services/greeting/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ greeting ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /Users/argu/workspaces/aws-compute-options/services/greeting/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ greeting ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/argu/workspaces/aws-compute-options/services/greeting/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ greeting ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ greeting ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-war-plugin:2.5:war (default-war) @ greeting ---
[INFO] Packaging webapp
[INFO] Assembling webapp [greeting] in [/Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting]
[INFO] Processing war project
[INFO] Webapp assembled in [105 msecs]
[INFO] Building war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO]
[INFO] --- wildfly-swarm-plugin:2018.2.0:package (default) @ greeting ---
Resolving 49 out of 222 artifacts
[INFO] Repackaging .war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO] Repackaged .war: /Users/argu/workspaces/aws-compute-options/services/greeting/target/greeting.war
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.30:build (default) @ greeting ---
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] F8: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[INFO] F8: Building Docker image in Kubernetes mode
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] F8: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] F8: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[INFO] F8: Running generator wildfly-swarm
[INFO] F8: wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.2 as base / builder
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] F8: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] F8: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[INFO] Copying files to /Users/argu/workspaces/aws-compute-options/services/greeting/target/docker/arungupta/greeting/build/maven
[INFO] Building tar: /Users/argu/workspaces/aws-compute-options/services/greeting/target/docker/arungupta/greeting/tmp/docker-build.tar
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Created docker-build.tar in 266 milliseconds
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Built image sha256:cd781
[INFO] F8: [arungupta/greeting:latest] "wildfly-swarm": Tag with latest
[INFO]
[INFO] --- fabric8-maven-plugin:3.5.30:push (default-cli) @ greeting ---
[INFO] F8> Running generator wildfly-swarm
[INFO] F8> wildfly-swarm: Using Docker image fabric8/java-jboss-openjdk8-jdk:1.2 as base / builder
[INFO] F8> The push refers to repository [docker.io/arungupta/greeting]
c23b06bf65ef: Preparing
d98d8362fa14: Preparing
dd5ac05fcae7: Preparing
ad2afd14bd56: Preparing
38ed80498e01: Preparing
b6b9cebd2bc4: Waiting
44d468e487be: Waiting
ebe243934b99: Waiting
fef12de4c7da: Waiting
3bf2c105669b: Waiting
85c6e373d858: Waiting
dc1e2dcdc7b6: Waiting
[ERROR] F8> Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  [denied: requested access to the resource is denied ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.386 s
[INFO] Finished at: 2018-02-15T14:12:40-08:00
[INFO] Final Memory: 51M/514M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.30:push (default-cli) on project greeting: Unable to push 'arungupta/greeting' : denied: requested access to the resource is denied  -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
services $

I didn't try running it with just the password.
But if I pass the username and password that way, then it worked for me

I added the following properties to pom.xml:
        <docker.push.username>arungupta</docker.push.username>
        <docker.push.password>password</docker.push.password>

So, docker.push.username was already set and just had to override docker.push.password.
If both username and password are specified, then it fails with:
[INFO] F8> The push refers to repository [docker.io/arungupta/greeting]
b32f57d8b2c3: Preparing
d98d8362fa14: Preparing
dd5ac05fcae7: Preparing
ad2afd14bd56: Preparing
38ed80498e01: Preparing
b6b9cebd2bc4: Waiting
44d468e487be: Waiting
ebe243934b99: Waiting
fef12de4c7da: Waiting
3bf2c105669b: Waiting
85c6e373d858: Waiting
dc1e2dcdc7b6: Waiting
[ERROR] F8> Unable to push 'arungupta/greeting' : unauthorized: incorrect username or password  [unauthorized: incorrect username or password ]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.468 s
[INFO] Finished at: 2018-02-15T14:46:40-08:00
[INFO] Final Memory: 51M/499M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.5.30:push (default-cli) on project greeting: Unable to push 'arungupta/greeting' : unauthorized: incorrect username or password  -> [Help 1]

These are the same values that are used with docker login.

That's very weird, didn't have the same issue myself

Closing this, following up at https://github.com/arun-gupta/microservices-greeting/issues/3

Closing this, following up at https://github.com/arun-gupta/microservices-greeting/issues/3


UseRangeCalendar - change availability of dates based on anchorDate

🙋 Feature Request
Hello! My team is using react-aria rangeCalendar hooks for quite a complex range selection with a lot of different day states. Most of it was fairly easy to implement using the different options these hooks provide but one thing that we haven't found a nice solution (other than hacky workarounds) for is changing date availability in the middle of the range selection. What we want is to show different dates as unavailable/available depending on whether the user didn't make any selection yet, chose the anchorDate or has fully selected a range. In short, we are looking for more flexibility with the isDateUnavailable function.
🤔 Expected Behavior
It is possible to use range calendar state into account when determining the date availability.
😯 Current Behavior
The isDateUnavailable function only has one param (the date in question) and it is part of the input to get the state object (from the useRangeCalendarState hook). Since you only get the anchorDate from that state object, it is quite hacky to use it to determine date availability. Our current workaround includes keeping our own state of anchorDate, which adds unnecessary complexity.
💁 Possible Solution
This can probably be solved in multiple ways, but our suggestion would be to pass additional params to the isDateUnavailable function (e.g. the anchorDate but perhaps the full state object would make even more sense) that would allow us to use that information in determining the date availability.
🔦 Context
Some context is already provided in the summary above. The range selection we're looking for is quite dynamic, where different dates can only be start OR end dates, there can be enforced minimum length of ranges or even only full weeks selection can be allowed. Therefore, the date unavailability changes a lot based on user action.
💻 Examples
N/A
🧢 Your Company/Team
N/A
🎁 Tracking Ticket (optional)
N/A

Hey @dj-neza! Did you get some solution to this? Did you end up using some hacky solutions? And if yes, could you provide example?

I've also come up against this issue. Our use cases include limiting the duration of the date range to 7 days and requiring that the user select at least one week. While extra validation can report the requirements to the user after they made a selection, it'd be nice to provide feedback while the user is choosing dates to begin with.
I was about to open a new feature request for minDuration and maxDuration props for RangeCalendar and DateRangePicker, but I'll add the context here because I think I'm only describing one possible solution to the issue or maybe only a subset of it as described above.
Before diving into more details, here's a concrete example of the intended result:
https://github.com/adobe/react-spectrum/assets/1218900/5f865daa-c75a-44a3-8146-d5f6e47cdcac
The user is allowed to choose any date, but the final range can only be 7 days in total. Once the user chooses the anchor date, the 6 days before and after the anchor date remain available and all other dates are unavailable.
The example above is implemented with roughly the following workaround:
const AnchorDateWatcher = ({ setAnchorDate }) => {
  const { anchorDate } = useContext(RangeCalendarStateContext);
  useEffect(() => setAnchorDate(anchorDate), [anchorDate, setAnchorDate]);
  return null;
}

const MyDateRangePicker = ({ isDateUnvailable, label, description, errorMessage, ...props }) => {
  const [anchorDate, setAnchorDate] = useState<DateValue | null>(null)
  const _isDateUnavailable = useCallback((date: DateValue) => {
    let result = isDateUnavailable?.(date) ?? false

    if (!result && anchorDate) {
      result = Math.abs(date.compare(anchorDate)) > 6
    }

    return result
  }, [anchorDate, isDateUnavailable])

  return (
    <DateRangePicker isDateUnavailable={_isDateUnvailable} {...props}>
      {label}
      <Group>{...}</Group>
      {description && <Text slot="description">{description}</Text>}
      <FieldError>{errorMessage}</FieldError>
      <Popover>
        <Dialog>
          <RangeCalendar>
            <AnchorDateWatcher setAnchorDate={setAnchorDate} />
            {...}
            <CalendarGrid>
              {...}
            </CalendarGrid>
          </RangeCalendar>
        </Dialog>
      </Popover>
    </DateRangePicker>
  )
}

This hack works, but it'd be great to have this functionality builtin. I propose adding two props, minDuration and maxDuration to RangeCalendar and DateRangePicker. These props can be either static durations like { days: 7 } or functions that take the anchorDate and return such a duration. To implement the example above, I would be able to use the following:
<DateRangePicker minValue={today()} maxDuration={{ days: 7 }}>{...}</DateRangePicker>

Allowing the props to be functions would cover more advanced use cases like allowing a rental to be booked for up to only 1 week during the summer, but up to 2 weeks in the off-season. Additionally, minDuration and maxDuration could be combined to handle use cases like selecting at least 1 week, but at most 2 or limiting the selection to exactly 1 week.
The initial suggestion here of adding the anchorDate as a second argument to isDateUnavailable would surely cover all of the use cases I've listed, but I can't think of a use case not covered by minDuration/maxDuration. Additionally, I think the majority of users would benefit from the narrower minDuration and maxDuration props as they could be integrated into the existing validation with localizations and would avoid the need for folks to repeat error-prone, datetime math in all of their isDateUnavailable definitions. I think the minDuration and maxDuration values could also include time information for fine-grained validation when the DateRangePicker includes time fields.

@adriantrunzo Hello Adrian! I have the same use case and thank you for sharing the example! When I try to use it in my project, I'm faced with a weird problem:
When you select the anchor date, the popover is not visually updated. The unavailable dates are not crossed out as in your example. However, the _isDateUnavailable function runs and mouse events are correct, as you can't select the unavailable dates, but the visual representation is just not updated.
I wonder if you faced a similar problem in your workaround.
And yeah +1 to support this feature natively.


feat: highlight changed

Add a highlighting effect to the key of the changed data.

Shortcoming: Because the value is only compared within the <DataKeyPair /> component, highlighting only display at the deepest key where changed. Adding and removing properties do not cause highlighting.

Add Option

enableHighlight: Whether to highlight the changed

Screenshot

Feel free to make your requests and suggestions.
close #267

Adding and removing properties do not cause highlighting.

It's ok. We can enhance this in the future.

All done, please review again 🙏

LGTM. Thanks for your contribution.

I kind of want to update the base16 color to make it yellow 🤔 maybe I will try in another PR.


Update crds.md

This was proposed against the old repo as https://github.com/openshift/compliance-operator/pull/828 so I'm submitting the same PR on behalf of the author.

/lgtm

/retest

/retest

rebased atop current master so that e2e picks up the latest content patches

/test e2e-aws

/test e2e-aws

/test e2e-aws
cluster installations are very broken

/test e2e-aws

@Vincent056 @rhmdnd PTAL


Poupedia no longer uses index.php

...It still does use index.php, it just hides it from the URL.

Destination search path needs to be defined (looks like it can be either / or /w/index.php; I would lean towards the latter since it is what's shown at Special:Version.

https://poupedia.com/Special:Version

It uses /w/index.php

https://github.com/KevinPayravi/indie-wiki-buddy/pull/793

https://github.com/KevinPayravi/indie-wiki-buddy/pull/793


fix: updated deps

Pull Request Test Coverage Report for Build 139

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

Totals

Change from base Build 89:
0.0%

Covered Lines:
325

Relevant Lines:
325

💛  - Coveralls

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Multiple Chime Meeting Windows Launched

This is not a bug, but a usability improvement.
The delay between clicking and launching Chime meeting prompts multiple clicks. The multiple clicks are also prompted by the fact that the click doesn't have a clicked feedback (did the click work or it didn't?). So I end up with multiple Chime windows for joining the meeting.
The meeting link should be disabled for a fixed duration (500ms?). Or the link click should have some click feedback. Or both.

Confirmed fixed :)


fix server address

https://github.com/redhat-beyond/beyond08-group3/blob/890f615b8e124afa814800a1b04b989d2173fd43/setup.sh#L15
the address mentioned above, doesn't open any webpage.
please correct it with the following:
http://<IP_ADDRESS>:8000/

Are yo sure? for me it's working.
make sure you enter the follow commands:
vagrant up
vagrant ssh
cd /vagrant
pipenv run python manage.py runserver <IP_ADDRESS>:8000
and then try to open the link:
http://<IP_ADDRESS>:8000/

thats the thing, when you do vagrant up, the server link should be http://<IP_ADDRESS>:8000/.
use vagrant up command and ull see the follows

the server link doesnt work

I think 0.0.0:8000 is okay
by typing <IP_ADDRESS> is for local host computer in port 8000

See the documentation here:
https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-runserver
I think <IP_ADDRESS> is ok. It means that the server can be accessed from all of the host ip addresses. <IP_ADDRESS> will mean you can access it only from the loopback interface which is available only locally.

got it


since the last update, i have to login to github several times after i reload the window or start up vscode

Type: Bug
Steps to Reproduce:

launch vscode
have to sign in to sync settings and for github extensions that require it (pull requests and copilot)
reload the window or relaunch vscode
again

happens even with all extensions disabled.
using remote over ssh.

Open the Command Palette
Run the Developer: Set Log Level... command
Choose Trace
Wait for the issue to happen...
Open the Output pane
drop in this issue he contents of the following:

GitHub Authentication Output channel
Log (Settings Sync) Output channel
Main Output channel

i opened a new window and it made me log in again, captured: https://pastebin.com/nr87fD9Q

also, vscode has been crashing a lot. may be related? annoying as that is though, that issue predates this one. you may see the crashes in the main log. (if we could fix that as well that would be amazing!)

hey @TylerLeonhardt have you had a chance to look at this yet? 🙏

Hi @asg0451 👋 I looked through your logs and unfortunately, it's a duplicate of https://github.com/microsoft/vscode/issues/130156 something that has been really hard to track down because of the rarity of this issue.
I'll close this as a dupe of that one, but maybe give some of those ideas a try and see how it goes. I can say that in the coming months, we'll be doing some drastic changes in this space that should resolve this in the future.

thanks @TylerLeonhardt . fwiw i have managed to resolve the issue (for now) by rm -rfing ~/.vscode-server on the remote machine.


Remove pkg/util and redistribute its logic

With this patch, each package has again one declared responsibility.

On hold pending the revert of the SSA infrastructure.

Superseded by #53