CellState.day isn't correct

Version 7.0.1
I've follow and learn your tutorial in the youtube video. Everything seems to be ok until I check with real calendar.
start date is 2017 01 01
but the  shown day of the weeks weren't correct.
As you can see in the pic below 2017 01 01 is supposed to be Sunday but it was Saturday.
I've checked cellState.day and .text.(see below).
Is there any thing I can do to fix this.
I really appreciate your work.

hmm.
Is that image you showed  supposed to by January 1st 2017?
That does not seem to be right.
Can you provide a zipped copy of your project ?
You can drag the zip file into this chat box.

TestCalendar.zip
Here you go.
Thank you very much for looking into this. :)

So im finally free and checking up on this to resolve this quickly.
The zip file you sent me has 2 files missing :/
CalendarViewController and CalendarCellView

I'm really sorry. I miss that.
Here is the one with CalendarViewController and CalendarCellView
TestCalendar.zip

I do not see any error with this. The image that you are seeing is the month of April 2017.
Here is the file. I added a header. If you are experiencing this issue still then chat with me here -> https://gitter.im/patchthecode/JTAppleCalendar
TestCalendar.zip

You see, the image I'm seeing is the month of April 2017. But I set it to show the mont of January 2017 and after I've checked its cellState.date or the formatter.string(from: date) It shows this pic below
The selected cell.text is 6.
formatter.string(from: date) =2017 01 06
cellState.date = 1471-01-05 17:04:35 +0000

Are you able to join me here? -> https://gitter.im/patchthecode/JTAppleCalendar

Diagnosis:
User used
let calendar = Calendar.current

This created a calendar with identifier Buddhist instead of Gregorian.
Therefore dates appeared wrong. :)
Solution: User simply had to create a calendar with identifier Gregorian.
Closing this issue as not a bug.
Cheers 🍻

Hello. I use Gregorian calendar. And now when I select date 7 septemper 2017 i get in debug:

Selected Date: 2017-09-06 18:00:00 +0000

@zhanswift what code are you using to print the debug date?

I use this:
func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) {
    print("Selected Date:", date)
}

@zhanswift this is not the correct way to print a date
You need to print a date to console using a date formatter. refer to this answer here for an explanation of how to do it -> https://github.com/patchthecode/JTAppleCalendar/issues/252
let me know if you are still stuck


will you please give the BaiDu NetDisk url ？

hi,
thanks for your awesome work. The GoogleNetDIsk can not be visited because the proxy. So will you please give the BaiDuNetDisk URL?

https://pan.baidu.com/s/1wJmIQs8DQ5LNJJU4lCHxmA?pwd=i9fc


change onTouch() method signature

https://developer.android.com/reference/kotlin/android/view/View.OnTouchListener
-> missed one method in https://github.com/capacitor-community/photoviewer/pull/31
fixes https://github.com/capacitor-community/photoviewer/issues/30

@adnbrownie in fact i merge it but it is wrong i could not build the project
i got
community/media/photoviewer/listeners/OnSwipeTouchListener.kt: (12, 34): Unexpected token

@adnbrownie so i will do this
  override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
    return gestureDetector.onTouchEvent(motionEvent)
  }

Ok sorry, I see now that the exclamation mark in Kotlin is not a language feature but just a notation for documentation etc.: https://kotlinlang.org/docs/java-interop.html#notation-for-platform-types

@adnbrownie no problem.


Share list via raw file

Hello!
Is there any idea to share the list with CSV/JSON file?
Could be accesed via your webpage or a file maintained inside this repository.

Hello @ventaquil,
Good question... Yes, I have something already.
I am using NocoDB, everything works except export via API to excel (bug reported https://github.com/nocodb/nocodb/issues/7215), but not fixed yet).
Have a try...

 Thank you!


Task 4 integration with database

Task:  https://github.com/EPAM-JS-Competency-center/cloud-development-course-initial/blob/main/4_integration_with_database/task.md
Link to FE deploy:  https://d3ixfh0870ptb9.cloudfront.net/
Link to FE PR:  https://github.com/alexkrv07/shop-react-redux-cloudfront/pull/2
Link to product-service API getProductsList, postProduct : https://hjqeay0f59.execute-api.eu-west-1.amazonaws.com/products
Link to product-service API getProductsById : https://hjqeay0f59.execute-api.eu-west-1.amazonaws.com/products/{id}
Done 24.06.2022 / deadline 25.06.2022
Score: 8 / 9

Evaluation criteria (each mark includes previous mark criteria)

1 - Task 4.1 is implemented
3 - Task 4.2 is implemented lambda links are provided and returns data
4 - Task 4.3 is implemented lambda links are provided and products is stored in DB (call Task 4.2 to see the product)
5 - Your own Frontend application is integrated with product service (/products API) and products from product-service are represented on Frontend. Link to a working Frontend application is provided for cross-check reviewer.

Additional (optional) tasks

+1 (All languages) - POST /products lambda functions returns error 400 status code if product data is invalid
+1 (All languages) - All lambdas return error 500 status code on any error (DB connection, any unhandled error in code)
+1 (All languages) - All lambdas do console.log for each incoming requests and their arguments
**** (All languages) - Transaction based creation of product (in case stock creation is failed then related to this stock product is not created and not ready to be used by the end user and vice versa)  - (https://devcenter.kinvey.com/nodejs/tutorials/bl-transactional-support) - not implememted

Task 4.2
Extend your serverless.yml file with credentials to your database instance
and pass it to lambda’s environment variables section. Integrate GET
/products lambda to return a list of products from the database (joined
stocks and products tables) Product instance on FE side should be joined
model of product and stock by productId.
Do not commit your environment variables in serverless.yml to github!!!
environment variables run into lambda? but not committed in github.
Security))
вт, 28 июн. 2022 г. в 02:48, Aliaksandr Varachai @.***>:

@.**** commented on this pull request.
In product-service/serverless.yml
https://github.com/alexkrv07/shop-react-aws-bc/pull/2#discussion_r907889173
:

+#        - Effect: "Allow"
+#          Action:
+#            - "s3:PutObject"
+#          Resource:
+#            Fn::Join:
+#              - ""
+#              - - "arn:aws:s3:::"
+#                - "Ref" : "ServerlessDeploymentBucket"
+#                - "/*"
+# you can define service wide environment variables here

environment:
PG_HOST:
PG_PORT:
PG_DATABASE:
PG_USERNAME:
PG_PASSWORD:

Environment variables can be initialized:

from any yml or json file like custom: ${file(./myCustomFile.yml)}.
See
https://www.serverless.com/framework/docs/providers/aws/guide/variables#reference-properties-in-other-files
from .env file using plugin
https://www.npmjs.com/package/serverless-dotenv-plugin
from environment variables like PG_PASSWORD: ${env:PG_PASSWORD}

—
Reply to this email directly, view it on GitHub
https://github.com/alexkrv07/shop-react-aws-bc/pull/2#pullrequestreview-1020908102,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALSIMRMGM3GDFN3OX3AUCD3VRI4UHANCNFSM5ZYPL7PQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


update logo

:star: PR built and available in a preview environment chrishankh-abc-pr-3 here

:star: PR built and available in a preview environment chrishankh-abc-pr-3 here

:star: PR built and available in a preview environment chrishankh-abc-pr-3 here


Buy Product not working on IOS

Hello,
I have created the below service to maintain a workflow between showing ads and purchasing a non-consumable IAP (to stop showing ads)
import { Injectable } from "@angular/core";
import * as purchase from "nativescript-purchase";
import { Product, ProductType } from "nativescript-purchase/product";
import { EventData, Observable } from "tns-core-modules/ui/page/page";
import { Transaction, TransactionState } from "nativescript-purchase/transaction";
import { CONSTANTS } from "~/models/constants";

@Injectable()
export class PurchaseService extends Observable {
    private products: Array<Product> = new Array<Product>();
    private eventData: EventData = {
        eventName: 'purchaseChanged',
        object: this
    };
    private initEventData: EventData = {
        eventName: "init",
        object: this
    };
    public initPromise: Promise<boolean> = undefined;
    public transactionUpdates: Promise<boolean> = undefined;
    public purchased: boolean = false;

    constructor() {
        super();
        this.initPromise = new Promise<boolean>((resolve, reject) => {
            (global as any).purchaseInitPromise.then(() => {
                purchase.getProducts().then((products: Array<Product>) => {
                    if (!!products) {
                        console.log("products", products);
                        this.products = products;
                        purchase.restorePurchases();
                        resolve(true);
                    } else {
                        this.purchased = true;
                        resolve(false);
                    }

                });
            });
        });
        this.transactionUpdates = new Promise<boolean>((resolve, reject) => {
            purchase.on(purchase.transactionUpdatedEvent, (data: Transaction) => {
                if ((!!data.originalTransaction && data.originalTransaction.productIdentifier == CONSTANTS.PREMIUM_IN_APP_PRODUCT_ID
                    || data.productIdentifier == CONSTANTS.PREMIUM_IN_APP_PRODUCT_ID) && (data.transactionState == TransactionState.Restored || data.transactionState == TransactionState.Purchased)) {
                    this.purchased = true;
                }
                resolve(this.purchased);
            });
        });
    }
    public isPurchased(product_id: string): boolean {
        return this.purchased;
    }
    public makePurchase(product_id: string): Promise<boolean> {
        return new Promise<boolean>((resolve, reject) => {
            if (!this.isPurchased(product_id)) {
                let product: Product = this.products.find((entry) => {
                    return entry.productIdentifier == product_id;
                });
                if (!!product) {
                    if (purchase.canMakePayments()) {
                        let result = purchase.buyProduct(product)
                        this.notify(this.eventData);
                        this.purchased = true;
                        resolve(this.isPurchased(product_id));
                    } else {
                        resolve(false);
                    }
                } else {
                    resolve(false);
                }
            } else {
                resolve(true);
            }
        });
    }
}

For android the workflow goes smoothly like this
Init Promise Gets Called - > Transaction Update Event Fired -> Check if purchased (No) -> Show Ads
(Yes) - > Hide Ads
First in ios the update transaction event was never fired, i thought that is OK and i moved the check to the init promise.
But Event trying to purchase the product is not working
the result in the below snippet always undefined
public makePurchase(product_id: string): Promise<boolean> {
        return new Promise<boolean>((resolve, reject) => {
            if (!this.isPurchased(product_id)) {
                let product: Product = this.products.find((entry) => {
                    return entry.productIdentifier == product_id;
                });
                if (!!product) {
                    if (purchase.canMakePayments()) {
                        let result = purchase.buyProduct(product)
                        this.notify(this.eventData);
                        this.purchased = true;
                        resolve(this.isPurchased(product_id));
                    } else {
                        resolve(false);
                    }
                } else {
                    resolve(false);
                }
            } else {
                resolve(true);
            }
        });

And please note that the product list returned correctly when calling purchase.getProducts()

@PeterStaev what does that label means?

@anaszgh , the label simply implies a non-premium support issue, since we started offering premium support for all our plugins: https://www.tangrainc.com/subscriptions/
Now back to your code: I can spot couple of problems with it:

Your transactionUpdates promise - you should not rely that this is triggered only once. As you can see here (or from the readme):
https://github.com/PeterStaev/nativescript-purchase/blob/19fe5bc08ae4037337c3abf6c9fbb0bc70e7a346/transaction/transaction.android.ts#L27-L39
android uses only 3 transaction states, while iOS has much more:
https://github.com/PeterStaev/nativescript-purchase/blob/19fe5bc08ae4037337c3abf6c9fbb0bc70e7a346/transaction/transaction.ios.ts#L25-L46
And your logic relies that you will get only once that event with the final state of the transaction and then resolve depending on whether or not the user purchased your product.
In your makePurchase method once you call buyProduct you immediately consider the product bought. This is also wrong as the user could cancel the purchase workflow for both android and iOS

I think the core of the problem relies in 1. above. I suggest you put a console.log in the transactionUpdated event and see how many times it is triggered in iOS and android and with what states. Since this is an event it is better suited for an rxjs Observable or BehaviorSubject so you can catch all possible situations.
Hope this helps you to narrow down the problem!

No further response so closing this one for now. In case you still have problems, please provide more details.


add: #729 Keptn CLI Autocompletion Instructions

Signed-off-by: Hemanth Krishna (DarthBenro008<EMAIL_ADDRESS>Signed-off-by: DarthBenro008<EMAIL_ADDRESS>Fixes #729
superseedes PR https://github.com/keptn/keptn.github.io/pull/758
I have squashed the commits and removed the generated files

Thanks @DarthBenro008


How check total review before crawling?

Dear @cowboy-bebug ,
I want to know total review before crawling because i want to split the review to file,Ex: Job 1 crawling from 1: 100-->write to file 001
Job 2 crawling from 101:200-->write to file 002
Many thanks @cowboy-bebug

Hey @tphuonglam82,
I don't think there is a way for us at the moment (I'm sure there are internal APIs but they aren't available to us 😄)
Also see https://github.com/cowboy-bebug/app-store-scraper/issues/28#issuecomment-741288533
Thanks!


Matching brackets

I feel like it could be a good idea if matching brackets were highlighted when your cursor is over them, as soon as I find what exactly allows that I'll try it out.

It does?

I must of screwed something up then, since I dont get it my solarized changes. I'll go check it out.

No problem, I have been changing stuff fast and furious, may well have fixed it after you forked.


Running pytest on master branch fails some tests

🐛🐛 Bug Report
Running pytest when with only requirements and requirements-dev installed makes 4 tests to fail.
hub/collections/tests/test_collections.py::test_unknown_size_input - NameError: name 'ModuleNotInstalledExcept...
hub/collections/tests/test_collections.py::test_lz4 - hub.exceptions.ModuleNotInstalledException: Module
hub/collections/tests/test_collections.py::test_description_license - hub.exceptions.ModuleNotInstalledExcepti...
hub/tests/test_hub_init.py::test_load - hub.exceptions.ShapeArgumentNotFoundException: Parameter 'shape' shoul...

⚙ Environment
Python 3.6
WSL Ubuntu 20.04 LTS
Windows Terminal
🧰 Possible Solution  (optional)
@davidbuniat I think we have to CI/CD tests twice once with requirements-optionals, once without.

@edogrigqv2 agree to add two steps for running tests and fixing the issues.


RegionCLIP detecions

Great work! I noticed that many scores in the RegionCLIP detection results are greater than 1 (as I understand it, scores should be between 0 and 1). What does this mean? Are they normal?

@Nathan-Li123
Thank you for your question!
I also observed this during my experiments.
The computation of the output score in RegionCLIP can be found in here and here:
# where s is in [0, 1], and rpn_s is in [-inf, +inf]
scores = [(s * rpn_s[:, None]) ** 0.5 for s, rpn_s in zip(scores, rpn_scores)]

So it's normal.


Add resource limit command

Summary
Adding the resource command to coursera_autograder SDK. This gets information about resource limits for a specific executor. So far, the base functionality seems to be working, but I still need to do testing on other use cases to make sure that we can fail gracefully in those scenarios.
Test Plan
Tested using commands following the form:
coursera_autograder get_resource_limits authoringBranch~nJc-PcxXEeqDJgprEGyUfw dx1Mn q5F9W

Cases tested:

Valid course/item/part ids (should print out message describing resource limits)

Input:
coursera_autograder get_resource_limits authoringBranch~nJc-PcxXEeqDJgprEGyUfw dx1Mn q5F9W

Output:
Resource Limits for executor with part id q5F9W in item dx1Mn in course authoringBranch~nJc-PcxXEeqDJgprEGyUfw:
Reserved CPU (AWS units -- 1024 units = 1 vCPU): 1024 (1.0 vCPUs)
Reserved Memory (MiB): 4096
Wall Clock Timeout (s): Timeout not set - default is 1200 seconds

Invalid part id (should throw 404 not found error)

Input:
coursera_autograder get_resource_limits authoringBranch~nJc-PcxXEeqDJgprEGyUfw dx1Mn q5F9

Output:
ERROR:root:
Unable to get executor resources.
CourseId: authoringBranch~nJc-PcxXEeqDJgprEGyUfw
ItemId: dx1Mn
PartId: q5F9
Status Code: 400
URL: https://api.coursera.org/api/authoringProgrammingAssignments.v3/?action=getGraderResourceLimits&id=authoringBranch!~nJc-PcxXEeqDJgprEGyUfw~dx1Mn&partId=q5F9
Response: {"errorCode":"MultipartPartId(q5F9) does not exist","message":null,"details":null}

Cases that need to be tested:

Graders with non-default resource limits. I'm not sure how to set resource limits. I could test this alongside the update resource limits command.

Can you add some sample input/output to the PR description? Maybe describe some concrete test cases that you covered? (similar to our existing Summary/Test Plan structure)

Good idea @ricky-wong. Updated the description.

Awesome. Fixed some formatting for you. For the "I don't know" case, it should basically be a reminder to avoid merging until you do know, or conclude/accept that it wasn't part of the testing.

Test plan looks great. Thank you.

Thanks Ricky! I'll hold off on merging until I can get some updates to the resource limits to verify that get_resource_limits is actually getting the correct values.

Tested a case with non-default limits and it worked. Merging this.


disable insecure TLS in CA mode

I'm not sure if this actually matters or not, but it's implementation
dependent and might matter.
Signed-off-by: Tycho Andersen<EMAIL_ADDRESS>

I'll take a close look at the impact of this on PKI mode when I'm back home. I'll also contribute a test for PKI mode.

Went through things again. Looks like InsecureSkipVerify isn't relevant to the daemon use case at all and we only have it here because of copy/paste from the original shared code.
So we should be fine to just remove InsecureSkipVerify setting from daemon.go entirely.


Implement int?

I tried using Copilot Workspace - it was rough.
#39

It's missing a README entry

It's missing a version bump


[B001290] Rep. Dave Brat

Newly elected to 114th congress

has yaml, seated earlier via special: https://github.com/unitedstates/contact-congress/blob/54d2c5b4baa8a160c7c9d8bbc3fb0a0a8eb7e7f5/members/B001290.yaml


Replace the __riscv_vid_v_i32m2 and __riscv_vid_v_i64m2 with __riscv…_vid_v_u32m2 and __riscv_vid_v_u64m2 for riscv64-unknown-linux-gnu-gcc compiling.

Since the functions __riscv_vid_v_i32m2 and __riscv_vid_v_i64m2, which are not standard RVV-Intrinsic API, fail to be compiled by the riscv64-unknown-linux-gnu-gcc compiler, replacing them with __riscv_vid_v_u32m2 and __riscv_vid_v_u64m2 turns out to be an effective solution to fix the bug.

Thanks - I guess these were a remnant from one of the earlier drafts or vendor extensions. It will probably make sense to change the associated data types to unsigned int as well, but I can take care of this separately


try to send notification with sound but function setSound not found !!

Hello
I try to send notification with sound but function setSound not found i copy it from Notification class and set it in Message class but still not working
any advice about how to use it or fixing it ?
Regards

Try it this way
$notification = new Notification('message title', 'message body');
$notification->setTitle('Overwrite that title')
->setSound(true)
->setBody('overwrite the message body');

In context to
$message
->setNotification(new Notification('title', 'body'))

Change to
$message
->setNotification($notification)

thank you its work

I have new option in IOS notification its called content_available
how to add it to notification to run it in background

@waleedazam you can do it like this:
$message->setJsonKey('content_available', true);

great .. its work :+1:


added social media icons

Did you really create the linkedIn for this ??

No

Did you really create the linkedIn for this ??

Our LinkedIn page is currently in a dormant stage. However, we are excited to announce that we will soon be revamping it with the help of our upcoming volunteer team who will handle our social media activities. As we kickstart our projects, we anticipate our LinkedIn page to become a vibrant community where we share our progress and engage with our followers.
@bilalshaikh292  LinkedIn page -
https://www.linkedin.com/company/open-code-era/

Did you really create the linkedIn for this ??

Our LinkedIn page is currently in a dormant stage. However, we will soon be revamping it with the help of our upcoming volunteer team who will handle our social media activities. As we kickstart our projects, we anticipate our LinkedIn page to become a vibrant community where we share our progress and engage with our followers.
@bilalshaikh292 LinkedIn page -
https://www.linkedin.com/company/open-code-era/

Wait... How serious is this project ??

Good Work. So I can continue contributing to this project.

Good Work. So I can continue contributing to this project.

SUre you can continue to work on it.

@bilalshaikh292 kindly resolve the merge conflicts.

ok

Wait... How serious is this project ??

This GitHub Organization is exclusively dedicated to open source projects and contributors.
It is officially affiliated with the Google Developer Student Club at GEU. You can find more information about the organization on our LinkedIn page: - [ ] https://www.linkedin.com/company/dscgeu/
As a side note, I am currently serving as the lead for open source projects at GDSC GEU.
While our GitHub Organization's repository& LinkedIn page may appear inactive at the moment, this is because we haven't yet introduced it to our students. However, rest assured, we are planning to roll it out to our students within this month.
Please note that the current inactivity should not be taken as a measure of the project's seriousness or potential. It is simply a preliminary phase before the official introduction and kick-off. Once it's introduced to the students, you can expect to see a surge in activity as our students start contributing to the open source projects.

Is this written by AI. I just checked for AI content detection and it says 90% chance

Is this written by AI. I just checked for AI content detection and it says 90% chance

It wasn't generated/written by AI, but I'll consider that a compliment! 🥹🤣

Your English is so formal then.

@bilalshaikh292 I'll be closing this PR. Kindly sync your fork with 'main' branch and then reopen a PR.

Will work on it 🧑💻


Translate optional modules should have their own module name and depend on the main translate module to allow out of order/async loading

Translate optional modules should have their own module name and depend on the main translate module to allow out of order/async loading

@pdanpdan  I'm not sure what you are talking about? Which modules? What do you mean with "async loading"?

angular-translate-loader-partial
angular-translate-storage-cookie
angular-translate-storage-local
... all live in separate files, and all need "angular-translate" file to be loaded before they can execute.
"angular-translate" creates a module "pascalprecht.translate", and all the other files use the same module.
If the files are loaded out of order (using async or other method) one might end up loading "angular-translate-loader-partial" before "angular-translate".
If each file ("angular-translate-loader-partial", ...) would create a separate module depending on "pascalprecht.translate" it would work well.
Like: angular.module('pascalprecht.translate.storage.local', ['pascalprecht.translate'])

I guess, I know what you mean, but where exactly do you currently have an issue with the order of loading the scripts? (e.g. in oc.lazyLoad you can trigger dependencies and load order also)
And on the other hand, this concept is already part of discussion on 3.0 - #995

Allright.
Yes, this is already addressed in the next major release. Meanwhile, the order of the scripts is important. But honestly, that should be no big deal today. Even without a package/bundle manager in use, you still must ensure that polyfills or even angular.js will be loaded at first.


Ensure messages are sent to/received from a child being restored

Adds Neighbor::IsInValidOrRestoringState() to check the state.
Update usage in MeshForwarder and MleRouter.

Codecov Report

Merging #1322 into master will decrease coverage by -0.34%.
The diff coverage is 80%.

@@            Coverage Diff             @@
##           master    #1322      +/-   ##
==========================================
- Coverage   69.73%   69.39%   -0.34%
==========================================
  Files         169      169
  Lines       26593    26591       -2
  Branches     3332     3332
==========================================
- Hits        18544    18453      -91
- Misses       6639     6717      +78
- Partials     1410     1421      +11

Impacted Files
Coverage Δ

src/core/thread/mle_router_ftd.hpp
93.75% <ø> (ø)
:white_check_mark:

src/core/thread/mle_router.cpp
79.62% <100%> (-0.45%)
:x:

src/core/thread/topology.hpp
100% <100%> (ø)
:white_check_mark:

src/core/thread/mesh_forwarder.cpp
75.58% <40%> (-0.47%)
:x:

src/core/thread/key_manager.hpp
80% <ø> (-20%)
:x:

src/core/openthread.cpp
35.19% <ø> (-11.18%)
:x:

src/core/net/udp6.cpp
82% <ø> (-3%)
:x:

src/ncp/ncp_base.cpp
37.75% <ø> (-2.02%)
:x:

...d_party/mbedtls/repo/library/memory_buffer_alloc.c
60.64% <ø> (-1.94%)
:x:

... and 8 more

Continue to review full report at Codecov.

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


⚠ Bofrost.es has degraded performance

In 2d4f5c4, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1559 ms

Resolved: Bofrost.es performance has improved in 405b411 after 20 minutes.


Common / Enabled can be changed after is parameterized

Environment
Windows 10, 64-bit
OpenTAP v9.19.0+22538968
TUI 1.0.0-rc+cfb8eede
Steps to reproduce:

Add a Delay step

Go to F7 Settings panel

Parameterize the Common / Enabled option

Edit the setting without unparameterizing it

Actual result:
You can enable - disable the option after you parameterize

Not sure if this is an issue @rmadsen-ks


PodSecurityPolicy: unable to admit pod

Trying to deploy this csi, I encounter an error starting
NAME                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR         AGE
daemonset.apps/cvmfs-csi-nodeplugin   0         0         0       0            0           metallb_nfs_lb=true   25h

Warning  FailedCreate  41s (x109 over 25h)  daemonset-controller  Error creating: pods "cvmfs-csi-nodeplugin-" is forbidden: PodSecurityPolicy: unable to admit pod: [spec.securityContext.hostPID: Invalid value: true: Host PID is not allowed to be used spec.containers[1].securityContext.capabilities.add: Invalid value: "SYS_ADMIN": capability may not be added]

I don't see a PodSecurityPolicy in the helm chart.
What should I do?

Hi @johnstile, indeed the chart doesn't have that anymore (the previous deployed it though). How exactly are you deploying it? Is it possible that you have some automation in the cluster that applies PodSecurityPolicy by default?

Hello @gman0 I have cvmfs-csi commit 18097c80de75c7325c910d53086cd76ef9aa797f with helm chart v3.2.1
I installed via a shim-tool that runs helm install for me, but my k8s version does list several PodSecurityPolicies, and they aren't limited to a namespace, so I'm not sure how to tell which one would affect me.
I have k8s
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.13", GitCommit:"2444b3347a2c45eb965b182fb836e1f51dc61b70", GitTreeState:"clean", BuildDate:"2021-11-17T13:00:29Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

Is there an older release of this chart that supports my k8s Server Version?

it looks like part of cvmfs-csi Chart v2.0.0 removed the PodSecurityPolicies.
Is there a way to use cvmfs-csi Chart v2.0.0 in kubernetes v1.20.13?

@johnstile cvmfs-csi 2.0.0 helm chart is compatible with Kubernetes >=v1.20.0.
Just to clarify, you're deploying the driver anew, or upgrading from an older version? I just created a fresh v1.20.4 cluster, installed the driver with helm and it all works fine.
$ helm install cvmfs cern/cvmfs-csi
NAME: cvmfs
LAST DEPLOYED: Fri Nov  4 11:11:55 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

$ kubectl get all
NAME                                                    READY   STATUS    RESTARTS   AGE
pod/cvmfs-cvmfs-csi-controllerplugin-7d8b4cfdfb-szthp   2/2     Running   0          12m
pod/cvmfs-cvmfs-csi-nodeplugin-2fcnv                    2/2     Running   0          12m
pod/cvmfs-demo                                          1/1     Running   0          2m10s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   <IP_ADDRESS>   <none>        443/TCP   33m

NAME                                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/cvmfs-cvmfs-csi-nodeplugin   1         1         1       1            1           <none>          12m

NAME                                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cvmfs-cvmfs-csi-controllerplugin   1/1     1            1           12m

NAME                                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/cvmfs-cvmfs-csi-controllerplugin-7d8b4cfdfb   1         1         1       12m

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.0", GitCommit:"ab69524f795c42094a6630298ff53f3c3ebab7f4", GitTreeState:"clean", BuildDate:"2021-12-07T18:16:20Z", GoVersion:"go1.17.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.4", GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", GitTreeState:"clean", BuildDate:"2021-02-18T16:03:00Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.23) and server (1.20) exceeds the supported minor version skew of +/-1

(I run the demos from example dir and it all works too, btw)

The driver's helm chart doesn't touch any PodSecuritPolicy-related stuff, so I don't think the error you are seeing is coming from the driver deployment itself. I would check if the cluster is running some 3rd-party component (e.g. OPA Gatekeeper, or perhaps the tool you're using instead of running helm install) that is adding the policies globally to all Pods, causing the installation to fail.

There is a default psp applied across the system, so I had to create a psp for the nodeplugin but now everything starts
kubectl get all

NAME                                              READY   STATUS                       RESTARTS   AGE
pod/cvmfs-atlas-nightlies                         0/1     ContainerCreating            0          100m
pod/cvmfs-csi-controllerplugin-7f7d9dbfd8-jlb7k   2/2     Running                      0          3h53m
pod/cvmfs-csi-nodeplugin-dktbj                    2/2     Running                      0          3h8m

NAME                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR         AGE
daemonset.apps/cvmfs-csi-nodeplugin   5         5         5       5            5           metallb_nfs_lb=true   4h48m

NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cvmfs-csi-controllerplugin   1/1     1            1           4h48m

NAME                                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/cvmfs-csi-controllerplugin-7f7d9dbfd8   1         1         1       4h48m

Although this allowed everything to start, I get a mount error (exit status 32)  trying to run this example:
https://github.com/cvmfs-contrib/cvmfs-csi/blob/master/docs/how-to-use.md#example-mounting-single-cvmfs-repository-using-repository-parameter
Error
I1108 22:54:59.471951  144212 mountutil.go:70] Exec-ID 53: Running command env=[] prog=/usr/bin/mount args=[mount --bind /cvmfs/atlas-nightlies.cern.ch /var/lib/kubelet/pods/d151b454-a855-4f6c-985e-1d769a1a4460/volumes/kubernetes.io~csi/pvc-6bf5574a-dd7a-4a2b-897d-792c06f7e120/mount]
I1108 22:55:02.387852  144212 mountutil.go:70] Exec-ID 53: Process exited: exit status 32
E1108 22:55:02.387887  144212 mountutil.go:70] Exec-ID 53: Error: exit status 32; Output: mount: special device /cvmfs/atlas-nightlies.cern.ch does not exist
E1108 22:55:02.387930  144212 grpcserver.go:141] Call-ID 156: Error: rpc error: code = Internal desc = failed to bind mount: exit status 32

my changes:
#nodeplugin-rbac.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cvmfs-csi.nodeplugin.fullname" . }}
labels:
{{- include "cvmfs-csi.nodeplugin.labels" .  | nindent 4 }}
rules:

apiGroups: ["policy"]
resources: ["podsecuritypolicies"]
verbs: ["use"]
resourceNames:

{{ include "cvmfs-csi.nodeplugin.fullname" . }}

apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
apiGroups: ["storage.k8s.io"]
resources: ["csinodes"]
verbs: ["get", "list", "watch"]
apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ include "cvmfs-csi.nodeplugin.fullname" . }}
labels:
{{- include "cvmfs-csi.nodeplugin.labels" .  | nindent 4 }}
subjects:

kind: ServiceAccount
name: {{ include "cvmfs-csi.serviceAccountName.nodeplugin" . }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ include "cvmfs-csi.nodeplugin.fullname" . }}
apiGroup: rbac.authorization.k8s.io

#nodeplugin-psp.yaml
{{- if .Values.nodeplugin.podSecurityPolicy.enabled -}}
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: {{ include "cvmfs-csi.nodeplugin.fullname" . }}
labels:
app: {{ template "cvmfs-csi.name" . }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
component: {{ .Values.nodeplugin.name }}
heritage: {{ .Release.Service }}
spec:
allowPrivilegeEscalation: true
allowedCapabilities:
- 'SYS_ADMIN'
fsGroup:
rule: RunAsAny
privileged: true
hostNetwork: true
hostPID: true
runAsUser:
rule: RunAsAny
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
volumes:
- 'configMap'
- 'emptyDir'
- 'projected'
- 'secret'
- 'downwardAPI'
- 'hostPath'
allowedHostPaths:
- pathPrefix: '/dev'
readOnly: false
- pathPrefix: '/run/mount'
readOnly: false
- pathPrefix: '/sys'
readOnly: false
- pathPrefix: '/lib/modules'
readOnly: true
- pathPrefix: '/var/lib/kubelet/pods'
readOnly: false
- pathPrefix: '{{ .Values.kubeletDirectory }}/plugins/{{ .Values.csiDriverName }}/{{ .Values.cvmfsCSIPluginSocketFile }}'
readOnly: false
- pathPrefix: '{{ .Values.registrationDir }}'
readOnly: false
- pathPrefix: '{{ .Values.kubeletDirectory }}/plugins'
readOnly: false
{{- end }}

@gman0 Can I ask how this is supposed to work?  Where should I find the mount on the worker?
kubectl describe pod/cvmfs-atlas-nightlies  |tail -6
  Type     Reason       Age                   From               Message
  ----     ------       ----                  ----               -------
  Normal   Scheduled    52m                   default-scheduler  Successfully assigned cvmfs-atlas-nightlies to ncn-w003
  Warning  FailedMount  29m                   kubelet, ncn-w003  Unable to attach or mount volumes: unmounted volumes=[my-cvmfs-atlas-nightlies], unattached volumes=[kube-api-access-nfcl7 my-cvmfs-atlas-nightlies]: timed out waiting for the condition
  Warning  FailedMount  6m55s (x16 over 50m)  kubelet, ncn-w003  Unable to attach or mount volumes: unmounted volumes=[my-cvmfs-atlas-nightlies], unattached volumes=[my-cvmfs-atlas-nightlies kube-api-access-nfcl7]: timed out waiting for the condition
  Warning  FailedMount  38s (x32 over 52m)    kubelet, ncn-w003  MountVolume.SetUp failed for volume "pvc-f4b1356c-3063-4de7-9faf-99bd4be71555" : rpc error: code = Internal desc = failed to bind mount: exit status 32

I see the pvc, and the details show storageClassName: cvmfs-atlas-nightlies
kubectl -n  get pvc cvmfs-atlas-nightlies
NAME                    STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS            AGE
cvmfs-atlas-nightlies   Bound    pvc-f4b1356c-3063-4de7-9faf-99bd4be71555   1          ROX            cvmfs-atlas-nightlies   54m

The storageClassName exists, and specifies the repository for the test
kubectl get storageclass cvmfs-atlas-nightlies
NAME                    PROVISIONER         RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
cvmfs-atlas-nightlies   cvmfs.csi.cern.ch   Delete          Immediate           false                  57m

kubectl get storageclass cvmfs-atlas-nightlies -o json |jq -rc '.parameters'
{"repository":"atlas-nightlies.cern.ch"}

Are there debug options I can enable?

Can I ask how this is supposed to work? Where should I find the mount on the worker?

If you followed the atlas-nightlies.cern.ch demo, the volume is mounted under /atlas-nightlies in the Pod. Once it starts, the volume can be accessed like so:
kubectl exec cvmfs-atlas-nightlies -- ls -l /atlas-nightlies

The mount is failing though, so the Pod won't start up. Can you please send full logs of the node plugin?
kubectl logs cvmfs-csi-nodeplugin-dktbj -c nodeplugin

And also uname -a of your host system on the node, if you have access to that.

in my testing the pod name changed.  but I have the logs:
Current state
kubectl get all  |egrep 'NAME|cvmfs'
NAME                                              READY   STATUS              RESTARTS   AGE
pod/cvmfs-atlas-nightlies                         0/1     ContainerCreating   0          9m8s
pod/cvmfs-csi-controllerplugin-7f7d9dbfd8-vhj2n   2/2     Running             0          12h
pod/cvmfs-csi-nodeplugin-cwc2f                    2/2     Running             0          12h
NAME                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR         AGE
daemonset.apps/cvmfs-csi-nodeplugin   1         1         1       1            1           metallb_nfs_lb=true   12h
NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cvmfs-csi-controllerplugin   1/1     1            1           12h
NAME                                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/cvmfs-csi-controllerplugin-7f7d9dbfd8   1         1         1       12h

nodeplugin Log
kubectl logs -l "app=cvmfs-csi,component=nodeplugin" -c nodeplugin
E1110 15:02:44.032571 2525277 grpcserver.go:141] Call-ID 33: Error: rpc error: code = Internal desc = failed to bind mount: exit status 32
I1110 15:03:48.102510 2525277 grpcserver.go:136] Call-ID 34: Call: /csi.v1.Node/NodeGetCapabilities
I1110 15:03:48.102588 2525277 grpcserver.go:137] Call-ID 34: Request: {}
I1110 15:03:48.102612 2525277 grpcserver.go:143] Call-ID 34: Response: {}
I1110 15:03:48.103527 2525277 grpcserver.go:136] Call-ID 35: Call: /csi.v1.Node/NodePublishVolume
I1110 15:03:48.103661 2525277 grpcserver.go:137] Call-ID 35: Request: {"target_path":"/var/lib/kubelet/pods/9a7185e1-34f4-42ce-96a4-8f7ef6d7400a/volumes/kubernetes.io~csi/pvc-00b8f1cf-aee9-4e29-8a33-85bd95745b79/mount","volume_capability":{"AccessType":{"Mount":{}},"access_mode":{"mode":3}},"volume_context":{"repository":"atlas-nightlies.cern.ch","storage.kubernetes.io/csiProvisionerIdentity":"1668047069197-8081-cvmfs.csi.cern.ch"},"volume_id":"pvc-00b8f1cf-aee9-4e29-8a33-85bd95745b79"}
I1110 15:03:48.106660 2525277 mountutil.go:70] Exec-ID 19: Running command env=[] prog=/usr/bin/mount args=[mount --bind /cvmfs/atlas-nightlies.cern.ch /var/lib/kubelet/pods/9a7185e1-34f4-42ce-96a4-8f7ef6d7400a/volumes/kubernetes.io~csi/pvc-00b8f1cf-aee9-4e29-8a33-85bd95745b79/mount]
I1110 15:03:54.341194 2525277 mountutil.go:70] Exec-ID 19: Process exited: exit status 32
E1110 15:03:54.341224 2525277 mountutil.go:70] Exec-ID 19: Error: exit status 32; Output: mount: special device /cvmfs/atlas-nightlies.cern.ch does not exist
E1110 15:03:54.341257 2525277 grpcserver.go:141] Call-ID 35: Error: rpc error: code = Internal desc = failed to bind mount: exit status 32

worker uname -a
pdsh -l root -w ncn-w003 "uname -a"
ncn-w003: Linux ncn-w003 5.3.18-150300.59.87-default #1 SMP Thu Jul 21 14:31:28 UTC 2022 (cc90276) x86_64 x86_64 x86_64 GNU/Linux

On the worker, I see an empty directory
ncn-w003:~ # ls -tlr /var/lib/kubelet/pods/9a7185e1-34f4-42ce-96a4-8f7ef6d7400a/volumes/kubernetes.io~csi/
total 0

I tried rolling out again, noting the pvc name and then looked for that as well
kubectl logs pod/cvmfs-csi-nodeplugin-zbmgp -c nodeplugin
I1110 15:46:09.778705 1308366 main.go:92] Running CVMFS CSI plugin with [/csi-cvmfsplugin -v=5 --nodeid=ncn-w003 --endpoint=unix:///var/lib/kubelet/plugins/cvmfs.csi.cern.ch/csi.sock --drivername=cvmfs.csi.cern.ch --start-automount-daemon=true --role=identity,node]
I1110 15:46:09.778811 1308366 driver.go:139] Driver: cvmfs.csi.cern.ch
I1110 15:46:09.778819 1308366 driver.go:141] Version: v2.0.0 (commit: 1e30ea639263f74179f971aea1cfad170a6b5c89; build time: 2022-11-10 15:46:09.77627803 +0000 UTC m=+0.003283452; metadata: )
I1110 15:46:09.778865 1308366 driver.go:155] Registering Identity server
I1110 15:46:09.778920 1308366 driver.go:210] Exec-ID 1: Running command env=[] prog=/usr/bin/cvmfs2 args=[cvmfs2 --version]
I1110 15:46:09.785272 1308366 driver.go:210] Exec-ID 1: Process exited: exit status 0
I1110 15:46:09.785299 1308366 driver.go:170] CernVM-FS version 2.9.4
I1110 15:46:09.785356 1308366 driver.go:227] Exec-ID 2: Running command env=[] prog=/usr/bin/cvmfs_config args=[cvmfs_config setup]
I1110 15:46:10.553807 1308366 driver.go:227] Exec-ID 2: Process exited: exit status 0
I1110 15:46:10.553931 1308366 driver.go:233] Exec-ID 3: Running command env=[] prog=/usr/sbin/automount args=[automount]
I1110 15:46:20.725551 1308366 driver.go:233] Exec-ID 3: Process exited: exit status 0
I1110 15:46:20.725657 1308366 driver.go:240] Exec-ID 4: Running command env=[] prog=/usr/bin/mount args=[mount --make-shared /cvmfs]
I1110 15:46:20.727381 1308366 driver.go:240] Exec-ID 4: Process exited: exit status 0
I1110 15:46:20.727397 1308366 driver.go:187] Registering Node server with capabilities []
I1110 15:46:20.727650 1308366 grpcserver.go:106] Listening for connections on /var/lib/kubelet/plugins/cvmfs.csi.cern.ch/csi.sock
I1110 15:46:20.747695 1308366 grpcserver.go:136] Call-ID 1: Call: /csi.v1.Identity/GetPluginInfo
I1110 15:46:20.749532 1308366 grpcserver.go:137] Call-ID 1: Request: {}
I1110 15:46:20.749623 1308366 grpcserver.go:143] Call-ID 1: Response: {"name":"cvmfs.csi.cern.ch","vendor_version":"v2.0.0"}
I1110 15:46:21.428120 1308366 grpcserver.go:136] Call-ID 2: Call: /csi.v1.Node/NodeGetInfo
I1110 15:46:21.428186 1308366 grpcserver.go:137] Call-ID 2: Request: {}
I1110 15:46:21.428306 1308366 grpcserver.go:143] Call-ID 2: Response: {"node_id":"ncn-w003"}
I1110 15:46:57.509264 1308366 grpcserver.go:136] Call-ID 3: Call: /csi.v1.Node/NodeGetCapabilities
I1110 15:46:57.509356 1308366 grpcserver.go:137] Call-ID 3: Request: {}
I1110 15:46:57.509508 1308366 grpcserver.go:143] Call-ID 3: Response: {}
I1110 15:46:57.511277 1308366 grpcserver.go:136] Call-ID 4: Call: /csi.v1.Node/NodePublishVolume
I1110 15:46:57.511591 1308366 grpcserver.go:137] Call-ID 4: Request: {"target_path":"/var/lib/kubelet/pods/9071eea2-ca12-40d7-94a1-ac3d7e6d8945/volumes/kubernetes.io~csi/pvc-3f2a1797-091d-443f-86f7-602b1aae4e10/mount","volume_capability":{"AccessType":{"Mount":{}},"access_mode":{"mode":3}},"volume_context":{"repository":"atlas-nightlies.cern.ch","storage.kubernetes.io/csiProvisionerIdentity":"1668047069197-8081-cvmfs.csi.cern.ch"},"volume_id":"pvc-3f2a1797-091d-443f-86f7-602b1aae4e10"}
I1110 15:46:57.514736 1308366 mountutil.go:70] Exec-ID 5: Running command env=[] prog=/usr/bin/mount args=[mount --bind /cvmfs/atlas-nightlies.cern.ch /var/lib/kubelet/pods/9071eea2-ca12-40d7-94a1-ac3d7e6d8945/volumes/kubernetes.io~csi/pvc-3f2a1797-091d-443f-86f7-602b1aae4e10/mount]
I1110 15:47:03.373869 1308366 mountutil.go:70] Exec-ID 5: Process exited: exit status 32
E1110 15:47:03.373900 1308366 mountutil.go:70] Exec-ID 5: Error: exit status 32; Output: mount: special device /cvmfs/atlas-nightlies.cern.ch does not exist
E1110 15:47:03.373948 1308366 grpcserver.go:141] Call-ID 4: Error: rpc error: code = Internal desc = failed to bind mount: exit status 32

ncn-w003:~ # ls -tlr /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-3f2a1797-091d-443f-86f7-602b1aae4e10/
total 4
-rw-r--r-- 1 root root 93 Nov 10 15:36 vol_data.json
drwxr-x--- 2 root root  6 Nov 10 15:36 globalmount

ncn-w003:~ # cat  /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-3f2a1797-091d-443f-86f7-602b1aae4e10/vol_data.json
{"driverName":"cvmfs.csi.cern.ch","volumeHandle":"pvc-3f2a1797-091d-443f-86f7-602b1aae4e10"}

ls -tlr /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-3f2a1797-091d-443f-86f7-602b1aae4e10/globalmount/
total 0

ncn-w003:~ # ls -tlr /var/lib/kubelet/pods/9071eea2-ca12-40d7-94a1-ac3d7e6d8945/volumes/kubernetes.io~csi/
total 0

On the worker I see:
ncn-w003:~ # ps -elf |grep cvmfs

4 S root     1307803 1307646  0  80   0 - 180095 -     15:46 ?        00:00:02 /csi-node-driver-registrar -v=5 --csi-address=/csi/csi.sock --kubelet-registration-path=/var/lib/kubelet/plugins/cvmfs.csi.cern.ch/csi.sock
4 S root     1308221 1307367  0  80   0 - 454511 -     15:46 ?        00:00:01 /csi-cvmfsplugin -v=5 --nodeid=$(NODE_ID) --endpoint=unix:///csi/csi.sock --drivername=cvmfs.csi.cern.ch --role=identity,controller
4 S root     1308366 1307646  0  80   0 - 405423 -     15:46 ?        00:00:01 /csi-cvmfsplugin -v=5 --nodeid=ncn-w003 --endpoint=unix:///var/lib/kubelet/plugins/cvmfs.csi.cern.ch/csi.sock --drivername=cvmfs.csi.cern.ch --start-automount-daemon=true --role=identity,node

Is there a manual mount I could do to help simulate what the cvmfs-csi is doing to help debug?

The issue is resolved.
The problem was config file default.local had a very large CVMFS_NFILES=8000000
This became apparent by trying to manually mount from a shell on the nodeplugin container.
    kubectl exec -it pod/cvmfs-csi-nodeplugin-r9llf -c nodeplugin -- /bin/bash
    [root@cvmfs-csi-nodeplugin-r9llf /]# ls -alF /cvmfs
      cvmfs/            cvmfs-localcache/
    [root@cvmfs-csi-nodeplugin-r9llf /]# ls -alF /cvmfs
      total 4
      drwxr-xr-x  2 root root    0 Nov 10 23:59 ./
      drwxr-xr-x 20 root root 4096 Nov 10 23:25 ../
    [root@cvmfs-csi-nodeplugin-r9llf /]# mount -v -r -t cvmfs alice.cern.ch /cvmfs
      Failed to set maximum number of open files, insufficient permissions

Comment out CVMFS_NFILES and redeploy helm chart and everything worked.
The test pod worked fine as well.
Thank you for you help!

@johnstile thanks for debugging this! I've pushed https://github.com/cvmfs-contrib/cvmfs-csi/pull/50 so that at least some CVMFS client errors are logged.


No way to process Internal Server Error (500)

I want to create custom template for 500 page error, but according to this piece of code there is no way to handle this error in SPA and return beautiful page, isn't it?

I wanted to piggy back on this request. I have a need for "hard" 404 errors. This could also pair well with the pull request for middleware (https://github.com/Akryum/vue-cli-plugin-ssr/pull/23) and give the ability for a multi-page application via middleware option. I submitted a pull request for consideration: https://github.com/Akryum/vue-cli-plugin-ssr/pull/29


How to create bridges

👋 I'm trying to figure out how to use network operator to create a linux bridge and maybe plumb some interfaces into it.  Looking at layer2networkconfiguration I can't figure it out. Can anyone provide an example?

Hey Layer2NetworkConfiguration should create a bridge, but it is currently heavily bound to a vtep so a VXLAN Overlay termination. It is currently mainly used for that.
apiVersion: network.schiff.telekom.de/v1alpha1
kind: Layer2NetworkConfiguration
metadata:
  name: vlan-100
spec:
  # this creates a separate interface for macvlan binding
  createMacVLANInterface: true
  # relevant only for der configuration
  advertiseNeighbors: false
  ## below options add a veth pair for gateway termination
  anycastGateways:
  - "<IP_ADDRESS>/24"
  anycastMac: "00:00:00:01:02:03"
  ##
  # required
  id: 100 # creates a bridge called vlan.100
  # required
  vni: 10100 # creates an vxlan endpoint called vx.10100
  mtu: 1500 # sets the correct mtu to all interfaces

got it. thank you!


Checking subgraph health does not work on hosted service or locally

https://thegraph.com/docs/deploy-a-subgraph#checking-subgraph-health gives information abour how to check subgraph status via index-node GraphQL endpoint, however it does not work for both https://api.thegraph.com and local network server.
Do you want to request a feature or report a bug?
This is bug or documentation need update.
What is the current behavior?
Documentation "Checking subgraph health" https://thegraph.com/docs/deploy-a-subgraph#checking-subgraph-health says

Graph Node exposes a graphql endpoint which you can query to check the status of your subgraph.
On the hosted service, it is available at https://api.thegraph.com/index-node/graphql.
On a local node it is available on port 8030 by default.

However  http POST to https://api.thegraph.com/index-node/graphql with QueryQL gives 404 or 400 errors;
opening in browser (http GET) gives

response 404 (backend NotFound), service rules for the path non-existent

While local network graph server instance gives 404
% node health.js
(node:13759) UnhandledPromiseRejectionWarning: Error: Request failed with status code 404

or just OK for http GET

OK

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem.
I use this minimal Node.js script (run locally or on https://npm.runkit.com/axios )
const axios = require("axios")
axios({
  //url: 'http://localnetworkserverip:8030',
  url: 'https://api.thegraph.com/index-node/graphql',
  method: 'post',
  data: {
    query: `
    indexingStatusForCurrentVersion(subgraphName: "org/subgraph") {
      synced
      health
      fatalError {
        message
        block {
          number
          hash
        }
        handler
      }
      chains {
        chainHeadBlock {
          number
        }
        latestBlock {
          number
        }
      }
    }
      `
  }
}).then((result) => {
  console.log(result.data)
});

What is the expected behavior?
It should be GraphQL response, so http status code must be 200.

Hi! I think your Node.js script is missing some curly brackets, this works:
const axios = require("axios")
axios({
  //url: 'http://localnetworkserverip:8030',
  url: 'https://api.thegraph.com/index-node/graphql',
  method: 'post',
  data: {
    query: `{
    indexingStatusForCurrentVersion(subgraphName: "org/subgraph") {
      synced
      health
      fatalError {
        message
        block {
          number
          hash
        }
        handler
      }
      chains {
        chainHeadBlock {
          number
        }
        latestBlock {
          number
        }
      }
    }
    }`
  }
}).then((result) => {
  console.log(result.data)
});

CURL equivalent:
curl --request POST 'https://api.thegraph.com/index-node/graphql'  --data-raw '{"query":"{ indexingStatusForCurrentVersion(subgraphName: \"org/subgraph-name\") { subgraph fatalError { message } nonFatalErrors {message } } }"}'

Yes, QueryQL query must be within { } pair.
Also local graph URL must have /graphql path, like :8030/graphql
(that is different from subgraph URL, where /graphql appears in browser, but must be removed for URL used in scripts )
so

[ ] example should be updated at https://thegraph.com/docs/deploy-a-subgraph#checking-subgraph-health
[ ] local node URL should be shown to have /graphql path, like :8030/graphql

For sure! That will go into the next docs update, thanks @paulvi


Make our shock spectra use the derivations from ISO 18431-4

This changes the coefficient calculations to use ISO 18431-4, and adds a few more shock types to the mix.  There's still a few small changes to add the new ones to shock_spectrum and a few more tweaks.
As a note, I've checked and the coefficients coming out of scipy using a FOH method seem to line up almost perfectly.
closes #132

werrrrrd I'm very excited to see this happening :D keep it up!

As a note, I've checked and the coefficients coming out of scipy using a FOH method seem to line up almost perfectly.

This sounds like a good thing, but I'm skeptical; I feel like it could just be a coincidence for the parameters you tested, or something like that. A good note, for sure, but I take it with a grain of salt.
If we do want to check if that holds more generally, it'd be a good application for a property (hypothesis) test.

werrrrrd I'm very excited to see this happening :D keep it up!

As a note, I've checked and the coefficients coming out of scipy using a FOH method seem to line up almost perfectly.

This sounds like a good thing, but I'm skeptical; I feel like it could just be a coincidence for the parameters you tested, or something like that. A good note, for sure, but I take it with a grain of salt.
If we do want to check if that holds more generally, it'd be a good application for a property (hypothesis) test.

After looking further into it, the ramp-invariant and FOH methods are the same thing.  I have no idea why basically nowhere mentions this.  But, the key difference is that I expect the ISO document has hand-derived equations and using scipy does something in state space I didn't linger on too much.  In theory, they should come out to the same answers, but naturally there's going to be some differences as a result of using A) a different method and B) floating point error.

After looking further into it, the ramp-invariant and FOH methods are the same thing.

interesting! can you compile your research on that somewhere (enough to at least show the equivalence)? I'd like to read through it.
And actually (back when I was still thinking I'd implement this myself) I was really hoping that one of the SciPy methods would align with the direct equations, because it means you can use one method to validate the other in (property) tests. I actually put in a bit of work on that a few months ago; if you're interested you can take a look at my old branch for it that I've rebased onto development.

In theory, they should come out to the same answers, but naturally there's going to be some differences as a result of using A) a different method and B) floating point error.

Hopefully the divergence is small enough that for most of the input variable space the two are roughly the same. If not the property tests won't work very well :\ (but if they don't work, we shouldn't be making that guarantee anyway. who knows.)

After looking further into it, the ramp-invariant and FOH methods are the same thing.

interesting! can you compile your research on that somewhere (enough to at least show the equivalence)? I'd like to read through it.

This paper is the best example I have describing it directly.  Otherwise I've been comparing the math between different sources that use different names.
This paper from VibrationData refers to the ramp-invariant method, check equation 13 at the bottom of page 3.
Wikipedia has a reasonable definition of First Order Hold which I've seen cited (for figures, not the math) twice, so I'm assuming enough academics have looked at it that it's reliable.
The gist is, in the laplace domain, multiply by a ramp function 1/(s^2) and in the Z domain, multiply by ((1 - z^-1)/T)^2.  This is, more specifically, the delayed FOH, which is equivalent to all the definitions of the ramp-invariant method I've seen.

Clarifying the above slightly, and using this table as reference, a simpler way to put is is that you basically multiply by the ___-invariant in the s domain, and divide by that in the z-domain.

Codecov Report

Merging #137 (13a8ef6) into development (60322c2) will increase coverage by 0.05%.
The diff coverage is 78.33%.

:exclamation: Current head 13a8ef6 differs from pull request most recent head d1a5f2f. Consider uploading reports for the commit d1a5f2f to get more accurate results

@@               Coverage Diff               @@
##           development     #137      +/-   ##
===============================================
+ Coverage        58.94%   59.00%   +0.05%
===============================================
  Files               33       33
  Lines             2443     2483      +40
===============================================
+ Hits              1440     1465      +25
- Misses            1003     1018      +15

Impacted Files
Coverage Δ

endaq/calc/shock.py
87.14% <78.33%> (-9.86%)
:arrow_down:

Continue to review full report at Codecov.

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


CodeIgniter DevKit

Switches to use the CodeIgniter DevKit
Applies all updated files & configurations

Closing in favor of #280 so secrets are available.


[Actions] Adding a flag to build interfaces on a specific branch

[DependsOn=ThunderInterfaces:development/correct-lisa]

@sebaszm as requested

@pwielders you're the only one powerful enough to merge here 😄


Node: Initial implementation and responses

Context

Related Tasks: Create a RPC node, Response Getter
The jstz_node will be a side-car service to the jstz rollup node. It's purpose will be communicating with the rollup using external messages, the kernel.log file (which we will eventually refactor into a one-way channel), and reading storage from the rollup node.
Description

Dependencies: #64, #77
This PR implements:

The initial jstz_node binary: a HTTP server (using actix-web) with logging.
The GET /operations/<hash>/receipt endpoint (using Rollup) to read the receipt from the rollup node's durable storage

Manually testing the PR

# terminal 1
cargo run --bin jstz -- sandbox start
# terminal 2
cargo run --bin jstz-node
# terminal 3
cargo run --bin jstz -- run "tezos://tz4.../"
Signed operation: ...

Using the hash h from the signed operation, curl http://localhost:8933/operations/<h>/receipt

I can't run cargo run --bin jstz-node due to this error:
...
223393c14" "-Wl,-dead_strip" "-nodefaultlibs"
  = note: ld: framework not found SystemConfiguration
          clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

error: could not compile `jstz_node` (bin "jstz-node") due to previous error

I'll add an asana task for a design doc of the jstz-node


Declare variables as immutable

Uses an automated approach to declare variables as immutable. This brings down the list of "potential immutable" variables detected by Dscanner from 2K to 1.4K (a lot of false positives are detected).
@JackStouffer I believe you will like this ;-)
(as mentioned this was done automatically, but I am happy to split it up if needed).

I would point out that doing this to unit tests is a bad idea, because they could be testing to make sure that a particular mutability works. And this is definitely the case with the std.datetime tests. So, please at minimum remove any immutability changes that you made to std.datetime, and if you make these changes to other unit tests, even if they aren't designed to test for specific mutability, you're changing what they're testing, and while that may not matter in some cases, I don't think that it's a good idea in general - especially if you're doing it in an automated fashion.
And it would not surprise me in the least if making these changes elsewhere is bad idea as well - especially if anything involves templated functions. Even if it happens to work with the current unit tests, it could easily be the case that the tests simply aren't thorough enough and missed testing with a type that won't work with immutable.
In general, I think that mass-applying immutability like this is just begging for trouble, and the value it brings is likely very minimal. So, while I fully expect that some of these changes are good, I think that doing this an an automated fashion is a very bad idea and that this PR should not be merged.

And the unit tests are failing because of these changes. I think that this PR should be closed and that any changes should be done manually and that any changes to unit tests or templated code should be done with caution. Just because using immutable might help the optimizer or avoid accidental mutation does not mean that applying it liberally is a good idea - especially to unit tests.

And the unit tests are failing because of these changes.

That's weird - it did pass locally.

I would point out that doing this to unit tests is a bad idea,
...
I think that this PR should be closed and that any changes should be done manually and that any changes to unit tests or templated code should be done with caution.

Fair enough - you made a strong case.

That's weird - it did pass locally.

They were passing on Linux_32_64 but failing on most everything else. So, some versioned code was probably the culprit, though that's still pretty weird, particularly considering that for the most part, all of the POSIX stuff is the same. But then again, that's part of why we have the autotester. Most of us don't have all of the various system types to test on.


Detailed articulation of the choice of Rust

Add this to the documentation site

Make the case for rust and memory safety.

Initial document: https://docs.google.com/document/d/16LFjllHI6jAtgURweasJ733X4l-XI8Fq3Ryy0b98Y0w/edit
Recent android article with nice summary toward the end (Prioritizing Prevention): https://security.googleblog.com/2021/04/rust-in-android-platform.html

Add to the FAQ: https://github.com/opendp/opendp-documentation/blob/main/source/user/faq.rst


Import/export wrappers: Remove new lines from log errors

Remove new lines from log errors as only the first line is filtered by gcloud due to subsequent lines not having an appropriate prefix. Alternate solution where each line would have a prefix would be more effort to implement, so this simpler solution was chosen. Not many cases where multi line errors are returned from Daisy.

/retest

/retest

/flake8


Policy bug when changing initiative profilename values

When you specify a different profilename in diagnostic initiative the deployifnotexists correctly uses this however the setbypolicy value is hard coded on the compliance check so compliance checks then fail even though the policy has correctly remediated item. simply change of the name utilising the profilename parameter corrects the issue.

Thanks for flagging this. We will correct this in upcoming PR.

Trigger ADO Sync 1

Trigger ADO Sync 2


Do macros used in source code work correctly?

**Godot version:**any
**OS/device including version:**anu
Issue description:
Why does a macro substitute an empty variable when checking?
#define ERR_FAIL_COND(m_cond)                                                                          \
	if (unlikely(m_cond)) {                                                                            \
		_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true."); \
		return;                                                                                \
	} else                                                                                \
		((void)0)

example:
void foo() {
   ERR_FAIL_COND(var1 != nullptr);
   var2 = Vector2(1,2);
}

When using a macro, wouldn't the code look like this?
void foo() {
   (void(0))var2 = Vector2(1,2);
}

It is correct?
Why not do that?
What is the meaning of the “else” operator?
#define ERR_FAIL_COND(m_cond)                                                                          \
	if (unlikely(m_cond)) {                                                                            \
		_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Condition \"" _STR(m_cond) "\" is true."); \
		return;                                                                                \
	}

Since there are many compilers, I fear that not everything may work correctly.
Is this an attempted appropriation?

apparently there is this bug)
_ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) {
	//void *failptr=0;
	//ERR_FAIL_COND_V( check < p_size , failptr); /** bug, or strange compiler, most likely */

	return p_pointer;
}

When a macro expands, it looks like this!
_ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) {
	(void(0))return p_pointer;
}

void foo() {
   ERR_FAIL_COND(var1 != nullptr)
   var2 = Vector2(1,2);
}

That's invalid and should fail compiling. The (void(0)) is there specifically to enforce having a semicolon at the end of the macro call.

apparently there is this bug?
_ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) {
	//void *failptr=0;
	//ERR_FAIL_COND_V( check < p_size , failptr); /** bug, or strange compiler, most likely */

	return p_pointer;
}

When a macro expands, it looks like this!
_ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) {
	(void(0))return p_pointer;
}

It's in a comment and should stay in a comment, no? So it would expand to:
_ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) {
	//void *failptr=0;
	//(void(0)); /** bug, or strange compiler, most likely */

	return p_pointer;
}

which is not a problem.

This is not really an issue and the question was already answered, so I'm closing this.


cluster.routing.allocation.disk.threshold_enabled default set to false

Describe the bug
Elasticsearch, as reported in the official documentation, has a disk allocation decider which controls where allocate new shards or where relocate shards from a node in case of disk usage above a threshold.
The default value in ES 7.5 is true but for some reason, Opendistro sets it to false.
grep cluster.routing.allocation.disk.threshold_enabled /usr/share/elasticsearch/config/elasticsearch.yml
cluster.routing.allocation.disk.threshold_enabled: false

To Reproduce
Steps to reproduce the behavior:

Deploy Elasticsearch
Grep cluster.routing.allocation.disk.threshold_enabled  on the configuration file

Expected behavior
cluster.routing.allocation.disk.threshold_enabled  set to true

I closed #1580 as there is now support for ES 7.6.1 on OpenDistro: https://opendistro.github.io/for-elasticsearch-docs/docs/install/plugins/
Let's upgrade our ES to 7.6.1 in order to stay up to date.

Opendistro/Opensearch is no longer controlled by Lagoon


Fixes naming of 400ng item in normalizr schema [delivers #161829706]

Description
The naming was off in the schema so this piece of data wasn't being denormalized properly
Code Review Verification Steps

[ ] Code follows the guidelines for Logging
[ ] The requirements listed in
Querying the Database Safely
have been satisfied.
Any new migrations/schema changes:

[ ] Follow our guidelines for zero-downtime deploys (see Zero-Downtime Deploys)
[ ] Have been communicated to #dp3-engineering

[ ] There are no aXe warnings for UI.
[ ] This works in IE.
Any new client dependencies (Google Analytics, hosted libraries, CDNs, etc) have been:

[ ] Communicated to @willowbl00
[ ] Added to the list of network dependencies

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Request review from a member of a different team.
[ ] Have the Pivotal acceptance criteria been met for this change?

References

Pivotal story for this change

Screenshots

I think the short answer is that it's because Swagger has both the ID and the model in the API definition, and we're sending both. We also use both, since the client consumes tariff400ng_items (when fetching) and sends tariff400ng_item_ids (for creation) using the same payload


Update traces exporters in kubernetes-deployment.md

Had to add spanmetrics to traces/exporters, otherwise the otel collector pod crashed with this error:
"collector server run finished with error: invalid configuration: connectors::spanmetrics: must be used as both receiver and exporter but is not used as exporter"

Thanks @fabric73  - can you sign the CLA? Then we can review.

@open-telemetry/demo-approvers PTAL

I think you should be able to fix that by using multiple pipelines, so update otelcol-config.yml to do something like:
service:
  pipelines:
    traces/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp, logging, spanmetrics]
    metrics/default:
      receivers: [otlp, spanmetrics]
      processors: [filter, batch]
      exporters: [prometheus, logging]
    logs/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

and then if needed someone can have their own pipeline in the extras file

I think you should be able to fix that by using multiple pipelines, so update otelcol-config.yml to do something like:
service:
  pipelines:
    traces/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp, logging, spanmetrics]
    metrics/default:
      receivers: [otlp, spanmetrics]
      processors: [filter, batch]
      exporters: [prometheus, logging]
    logs/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

and then if needed someone can have their own pipeline in the extras file

This sounds like a great approach!

I think you should be able to fix that by using multiple pipelines, so update otelcol-config.yml to do something like:
service:
  pipelines:
    traces/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp, logging, spanmetrics]
    metrics/default:
      receivers: [otlp, spanmetrics]
      processors: [filter, batch]
      exporters: [prometheus, logging]
    logs/default:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

and then if needed someone can have their own pipeline in the extras file

This sounds like a great approach!

@fabric73 , this is much more work than the initial PR but would you be willing to work on that? @julianocosta89 & I can provide you with guidance for things that are unclear

Discussed this case at the SIG Meeting and we agreed to update the docs, instead of defining a new pipeline.
I'll take care of that in a new PR.


Pagination screen reader tweak

setting new screen reader text after convo with @dakahn .
also removing some code smell of exposing the button text as a prop—should not be configurable.

https://github.com/IBM/carbon-components/pull/2136 was merged while i was working on this, so i just made a new PR. files changed view still shows a good summary of the a11y tweaks here

i updated the story to match the default props for better screen reader text!


fit BottomSheet not to be displayed behind navbar

Issue

close #893

Overview (Required)

When search filter bottomsheet is displayed on older devices, bottomsheet is displayed behind navbar.
Display bottomsheet to be able to click on these devices.

Links

App Design

Screenshot

Device
Before
After

Pixel2 API 24

Pixel6 API 33

Movie

Device
Before
After

Pixel2 API 24

Pixel6 API 33

👀

Great videos! Thanks 🙏

But I think it is better than the current implementation! So I'll merge this! Thanks!


Locally scoped JSX + non-wildcard import doesn't work

TypeScript Version:  2.9.0-dev.20180428

Search Terms:  jsx, jsxfactory
Code
Over at preact we are currently trying out the new feature of locally scoped JSX namespaces.
// tsconfig.json
{
  "compilerOptions": {
    "jsx": "react",
    "jsxFactory": "h",
  }
}

// This is how most of our users use preact with TS
import { h, Component } from "preact";

export class Foo extends Component {
  render() {
    //
 has type `any`
    return
hey
;
  }
}

Slightly rewriting our example we can get this to work:
// tsconfig.json
{
  "compilerOptions": {
    "jsx": "react",
    "jsxFactory": "preact.h",
  }
}

import * as preact from "preact";

export class Foo extends preact.Component {
  render() {
    //
 now has correct type
    return
hey
;
  }
}

But that does seem unnecessary.
Expected behavior:
Type of
 is inferred from the JSX namespace when using jsxFactory: h and import { h } from "preact"
Actual behavior:

 is typed as any.
Playground Link:
N/A
Related Issues:

The jsx namespace is relative to the root identifier of the factory... So if the factory is a bare h, the namespace should be under the h function itself. If the factory is preact.h, then you can place it within preact. If the intent is that your users import/reference your factory with no qualifier, then the namespace should be under the function (and I suppose if you want to be flexible you can alias it elsewhere).

@weswigham Thanks four your quick response, that sounds reasonable 👍 Seems like using wildcards is the way to go.

You should probably just move your namespace if you want "jsxFactory": "h" to work. Namely, move it to
export function h(/*...*/): h.JSX.Element;
export namespace h {
    export namespace JSX {
        export interface Element {}
    }
}

You can probably also get away with being flexible and making it work in both ways (ie, with either factory style) with something like
namespace JSXInternal {
    export interface Element {}
}
export { JSXInternal as JSX };
export function h(): JSXInternal.Element;
export namespace h {
    export import JSX = JSXInternal;
}


Small git utils improvements

Saves ~20ms per call of length_uft8_hex
Improve test coverage

heh, yea, so thats probably another transpiler bug, CASTING char to hex, whereas hex to char works

yeah pushing the limits 😀
FIELD-SYMBOLS:
  <i> TYPE i,
  <c> TYPE c,
  <x> TYPE x,
  <s> TYPE string,
  <any> TYPE any.

all of these transpile to the same let fs_var_ = new abap.types.FieldSymbol();. so the type isn't passed in.

its now passed in 😁 https://github.com/abaplint/transpiler/pull/748/commits/ef63a46f8f4b8ef769cdb77f661b86f46cb0dedb

alright 👍


🐛 Fix string interpolation issue in server.ts

I was just having a look around and noticed that.

Ahh thank you very much


iOS Picking Feature

When I tap on a map I want to check if its hitting a feature (point, line or polygon).
I have checked the pickFeaturesAt(float _x, float _y) in tangram.cpp but its only checking for Labels (labels.h).
I'm not sure what actually label is and does it have to do any thing with feature. (ProjectedFeature).
Can you please guide me on this. If this is supported? Or am I using the wrong method?
I used this functionality for POIs (points) in android successfully. Kinda stuck with iOS, any help will be appreciated.
Thanks
Sajad.

Hey @sajadkhan , our feature picking only checks for labels currently. We plan to update it to be able to pick any feature in the future (polygon/lines).
For now, if you query pickFeatureAt you should have a TouchItem with a set of properties that you can iterate through (See https://github.com/tangrams/tangram-es/blob/master/core/src/tangram.h#L147_L153), If you want to see how this struct is described: https://github.com/tangrams/tangram-es/blob/master/core/src/data/properties.h but keep in mind that those queries are only for point and line labels.
Keep in mind that this will be wrapped within the iOS SDK so the usage would more iOS friendly (in a similar way as our Android SDK does) so it is subject to change; but for now I guess that you can already use those structs if you need to do so.
On another note, don't forget to set the properties in the stylesheet (interactive: true) for the required features; see https://mapzen.com/documentation/tangram/draw/#interactive.

As to your question of what a "label" is, it encompasses text and
icons/sprites.
On Fri, May 20, 2016 at 10:10 AM, Karim Naaji<EMAIL_ADDRESS>wrote:

Hey @sajadkhan https://github.com/sajadkhan , our feature picking only
checks for labels currently. We plan to update it to be able to pick any
feature in the future (polygon/lines).
For now, if you query pickFeatureAt you should have a TouchItem with a
set of properties that you can iterate through (See
https://github.com/tangrams/tangram-es/blob/master/core/src/tangram.h#L147_L153),
If you want to see how this struct is described:
https://github.com/tangrams/tangram-es/blob/master/core/src/data/properties.h
but keep in mind that those queries are only for point and line labels.
Keep in mind that this will be wrapped within the iOS SDK so the usage
would more iOS friendly (in a similar way as our Android SDK does) so it is
subject to change; but for now I guess that you can already use those
structs if you need to do so.
On another note, don't forget to set the properties in the stylesheet (interactive:
true) for the required features; see
https://mapzen.com/documentation/tangram/draw/#interactive.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/tangrams/tangram-es/issues/743#issuecomment-220615879

Thanks for the explanation. Can you please give me an example how to add label on the scene? That will be really helpful.
And as its mentioned in previous threads also that iOS SDK is under progress. Can you give an estimation for that? I mean when it will be launched?

@msmollin is leading the work on the Tangram iOS SDK, he can give a more detailed timeframe about it.
Labels would be created when any layer would be matching with a text draw rule or point draw rule under it. Here is an example on how to add road labels:
layers:
    roads:
        data: { source: mapzen }
        filter: { not: { kind: ferry } }
        labels:
            filter:
                name: true
            draw:
                text:
                    font:
                        fill: white
                        family: Helvetica
                        size: 11px

            highway:
                filter: { kind: highway }
                draw:
                    text:
                        font:
                            size: 12px
                            weight: bold

See also for documentation about those:

https://mapzen.com/documentation/tangram/Styles-Overview/#points
https://mapzen.com/documentation/tangram/Styles-Overview/#text

Hi @sajadkhan feel free to subscribe to updates from https://github.com/tangrams/tangram-es/issues/741 so you can stay in the loop on iOS framework progress. I'll be posting relevant information there in the coming weeks.

@karimnaaji thanks for the explanaing but I'm looking to add a label on user action (tap). How can I achieve that using tangram?

Closing this in favor of #741, which tracks all ios sdk work.


Update uses of access_token and warn about requiring header usage.

Thanks. Ported this over to the internal repo.

Fixed in internal repo. Closing as fixed.


fix callback in different window context

related issue https://github.com/pyimgui/pyimgui/issues/324

This is a nice solution! Thanks!
I implemented it in glumpy's integration.
Still must do it for

pygame
piglet
sdl2

I'll do them as soon as I have time ;)

pygame and sdl2 doesn't need to be modified, their inputs are manually managed by client code with a call to renderer.process_event() and thus don't suffer from the same issue of processing events in an arbitrary place that won't respect the imgui current context.

Thanks for your help ;)