GraphQL interface for products pt. 3

Review guide
What's new?

the StandardProduct data model and the corresponding GraphQL type
GraphQL queries to retrieve standard products (either by ID, or a list of them)
GraphQL mutations to enable/edit/disable standard product instantiations for a base
a new resource-based permission standard_product:read (for the view_inventory action-based permission)

Functional review
Only the<EMAIL_ADDRESS>user has the new RBP granted in Auth0.
query { standardProduct(id: 1) { ...on StandardProduct { name version } } }
query { standardProducts { ...on StandardProductPage { elements { name version } } } }

mutation { enableStandardProduct(enableInput: { standardProductId: 1, baseId: 1 }) { ...on Product { id name type price base { id } createdOn } } }
mutation { editStandardProductInstantiation(editInput: { id: X, price: 1 }) { ...on Product { price } } }
mutation { disableStandardProduct(id: X) { ...on Product { deletedOn } } }

Notes/questions

the standardProduct* queries return a union type wrapping the actual resource and errors
what filters could be useful for standardProducts query? E.g. only the newest version, or filtering for certain versions?
should we return an error when editing/deleting deleted products?

 2.0 ASSORT: Detailed GraphQL interface pt3 (for enabling/disabling standard products)


Use a single repository for assignments' starter code

@david-yz-liu I will address the comments next week, unless you want it urgently.


option to scan without updating docs

My use case is running license_finder from a rake task. I want to run license_finder as part of my test suite before pushing commits to master, but don't want the default rake task to update license_finder's artifacts in the doc directory.

Closing this with the release of 2.0.  Fixing this kind of problem was a major motivation for the 2.0 work, so thanks for contributing to this discussion.


Configuration Problems with Multi-Juicer

Hi,
I'm actually trying to edit the values.yaml to hide the Challenge Hints, Hacking Instructor and to upgrade the Grace Period to 10d. Therefore I deleted the # in front of showChallengeHints and showHackingInstructor in the values.yaml file. After that I tried the installation with your instruction: helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/
This command was not useful in all, because I get the following error: Error: path "./multi-juicer/helm/multi-juicer/" not found
The only way this command works if I change it to: helm install -f values.yaml multi-juicer multi-juicer/multi-juicer
If I do this, I won't be able to open a JuiceShop after I joined a team. The error that Kubernetes shows me is:
Readiness probe failed: Get "http://<IP_ADDRESS>:3000/rest/admin/application-version": dial tcp <IP_ADDRESS>:3000: connect: connection refused
Back-off restarting failed container

(If I install it without changing the values.yaml file, it is working)
After that I tried to change the values using the --set="" command.  My command was:  helm install multi-juicer multi-juicer/multi-juicer --set="juiceShopCleanup.gracePeriod=10d" --set="juiceShop.config.application.showChallengeHints=false" --set="juiceShop.config.application.showHackingInstructor=false"
If i try this command, I will get this error:
 coalesce.go:199: warning: destination for config is a table. Ignoring non-table value application:
  logo: JuiceShopCTF_Logo.png
  favicon: favicon_ctf.ico
  # showChallengeHints: false
  showVersionNumber: false
  # showHackingInstructor: false
  showGitHubLinks: false
# ctf:
  # showFlagsInNotifications: true
Error: template: multi-juicer/templates/juice-shop-config-map.yaml:9:37: executing "multi-juicer/templates/juice-shop-config-map.yaml" at <4>: wrong type for value                       ; expected string; got map[string]interface {}

Can you help me to solve this problem?
Regards

Hi 👋
Thanks for taking the time wrioting down which problems you encountered, that helps a lot.
That's quite a few points there, let me try if I can break them down:

helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/ failed, because this would require you to have the repo cloned locally, which the error indicates you didn't do.
helm install -f values.yaml multi-juicer multi-juicer/multi-juicer should have been okay, as this pulls the helm chart from the repo and overrides the values defined in values.yaml. Not sure what exactly you did change in the values file, might have been something the juice-shop didn't like. If you see the error again, the juice-shop logs might be able to tell whats wrong there.
The install with --set="juiceShop.config.application.showChallengeHints=false", doesn't work like this because the juiceShop.config in the helmvalues isn't a real yaml object but a multi line string (indicated by config: |).  To change values in there you'll have to override the entire multi line string.  Easiest way to do that is by using a values file rather than a string.

Suggested solution:
helm install -f values.yaml multi-juicer multi-juicer/multi-juicer

values.yaml file:
juiceShop:
  config: |
    application:
      logo: JuiceShopCTF_Logo.png
      favicon: favicon_ctf.ico
      showChallengeHints: false
      showVersionNumber: false
      showHackingInstructor: false
      showGitHubLinks: false
    ctf:
      showFlagsInNotifications: true

If this fails again, take a peak into the juiceshop logs of the pods of the newly created team. This might be clearer on why the pod doesn't start correctly.
Hope that helps 🤞

I tried it out, but it is still not working. It seems like, it is having some issues with overwriting the config file.
The juice-shop logs look likes this:
><EMAIL_ADDRESS>start /juice-shop
> node app

info: All dependencies in ./package.json are satisfied (OK)
info: Chatbot training data botDefaultTrainingData.json validated (OK)
info: Detected Node.js version v12.20.0 (OK)
info: Detected OS linux (OK)
info: Detected CPU x64 (OK)
warn: Config schema validation failed with 2 errors (NOT OK)
warn: application.showChallengeHints: is not present in schema
warn: application.showHackingInstructor: is not present in schema
warn: Configuration multi-juicer validated (NOT OK)
warn: Visit https://pwning.owasp-juice.shop/part1/customization.html#yaml-configuration-file for the configuration schema definition.
error: Exiting due to configuration errors!
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: `node app`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/juicer/.npm/_logs/2021-02-03T08_43_40_679Z-debug.log

Mh no apperently the schema for the config has changed, which clashes with the previously commented out config values. Will have to update the default config. This values file should work:
juiceShop:
  config: |
    application:
      logo: JuiceShopCTF_Logo.png
      favicon: favicon_ctf.ico
      showVersionNumber: false
      showGitHubLinks: false
    challenges:
      showHints: false
    hackingInstructor:
      isEnabled: false
    ctf:
      showFlagsInNotifications: true

Nice, it is working perfectly now. Thank you for your always fast and helpful support :)


 I don't seem to see any examples of this

What is the model output?
Is it a feature vector, for example used for computing similarity scores between faces? Or something else?

Is it a feature vector，Input a face picture, get a feature vector

We would have to define a custom target for this, instead of the classifier target.
Something like
class FaceRecognitionTarget:
    def __init__(self, target_face_features):
        self.target_face_features = target_face_features
    def __call__(self, model_output):
         return torch.dot(model_output, self.target_face_features)

To see what in the image is similar to a target face, create the target for the target face representation.
Can replace the dot here with L2 norm, cosine similarity, or anything else that is appropriate for computing the similarity between the vectors.
This would be a good example to add as a notebook for this repo.
I can add this, but might take me 1-2 weeks to get to it.

Thank you very much and I look forward to your updates
---Original---
From: "Jacob @.>
Date: Thu, Mar 31, 2022 13:01 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [jacobgil/pytorch-grad-cam] If I want to visualize a facerecognition model, what should I do? I don't seem to see any examples of this(Issue #218)
We would have to define a custom target for this, instead of the classifier target.
Something like
class FaceRecognitionTarget:     def init(self, target_face_features):         self.target_face_features = target_face_features     def call(self, model_output):          return torch.dot(model_output, self.target_face_features)
To see what in the image is similar to a target face, create the target for the target face representation.
Can replace the dot here with L2 norm, cosine similarity, or anything else that is appropriate for computing the similarity between the vectors.
This would be a good example to add as a notebook for this repo.
I can add this, but might take me 1-2 weeks to get to it.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>


.navbar-toggler showing up on normal screen

I have the current bootstrap version install on Rails 5.2. With all of the dependencies installed.
I added a navbar and it shows up as a mobile view. I'm using Google Chrome and Safari, and the error persists.
Is this a feature or a bug?

Navbar is mobile-first in v4 now—you'll need to specify when it unfolds with a .navbar-expand class. See the latest in our v4-dev branch's docs.

Thanks @mdo!


[F* error] Bound term variable not found (after unmangling): uu___#116782 in environment: x2#116821, uu___#116818, …

and reducing f yields this:
[F* error] Unexpected error; please file a bug report, ideally with a minimized version of the source program that triggered the error.
[F* error] Universe variable not found

The first problems seems gone now, but the second one is still there. Moreover, the inferred type of f seems junk, since it still contains large number of unresolved unification variables:
  a:Type ->
  l1:uu___159804 ->
  l2:uu___159803 -> x1:uu___159802 -> x2:uu___159801 -> Prims.Tot (Type * Type * uu___159801)

Can't repro either issue anymore and the inferred type of f is

      #uu___4252: Type ->
      #uu___4253: Type ->
      #uu___4254: Type ->
      #uu___4255: Type ->
      a4256: Type ->
      l14257: uu___4252 ->
      l24258: uu___4253 ->
      x14259: uu___4254 ->
      x24260: uu___4255
    -> Prims.Tot (((Type * Type) * uu___4254) * uu___4255)


Remove HTTP/2 support until Go 1.6

The current use of the github.com/bradfitz/http2 package to support HTTP/2 causes random and difficult to troubleshoot issues with iOS clients. We should remove this support until Go officially supports it in 1.6 slated for "early 2016":

Early next year we will release more improvements in Go 1.6, including an SSA-based optimizing compiler back end, HTTP/2 support for net/http servers and clients, an official package vendoring mechanism, support for blocks in text and HTML templates, a memory sanitizer that checks both Go and C/C++ code, and the usual assortment of other improvements and fixes.

(emphasis mine)

Or just try rebuilding it against 1.6.

Now building on Go 1.6 in #128


Code cleanup. Refactor duplicate code in to a utility.

Motivation
While working on a solution for SWARM-1667, I noticed (thanks to the IDE) that there was code duplication within the test cases which were trying to read the contents of the deployed archive.
Modifications

Moved all such occurrences to the Arquillian module and consumed the utility method in existing test cases.

Result
Verified that the build is going through properly.

[x] Have you followed the guidelines in our Contributing document?
[ ] Have you created a JIRA and used it in the commit message?
[x] Have you checked to ensure there aren't other open Pull Requests for the same issue?
[x] Have you built the project locally prior to submission with mvn clean install?

I'm not sure if WildFly Swarm is the right project to carry this kind of utilities. The tests should just use org.apache.httpcomponents:fluent-hc, where doing this is as simple as String response = Request.Get("http://localhost:8080/").execute().returnContent().asString();.

I would tend to agree, if there's a way to do this without adding utility classes that would be my preference.

Sure thing. Let me see if I can find something in the existing dependency tree.

Looks like Commons IOUtils is available. I should be able to replace all calls with the toString method invocation. Will rebase and update.

Retest this please

This needs rebasing

Rebased. Verified local build.

@Ladicek
This is the error that I get if I don't include the dependency explicitly,
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 8.934 sec <<< FAILURE! - in VerifyBuildArtefactIT
testEndppoint(VerifyBuildArtefactIT)  Time elapsed: 0.215 sec  <<< ERROR!
java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
    at VerifyBuildArtefactIT.testEndppoint(VerifyBuildArtefactIT.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils from [Module "deployment.endpoint.war" from Service Module Loader]
    at VerifyBuildArtefactIT.testEndppoint(VerifyBuildArtefactIT.java:31)

Can you confirm the changes that I made (for including the commons-io jar directly in to the POM) are the correct ones?

I'm not quite sure what's the actual question, but given that the PR was merged and it doesn't touch any of the Maven Plugin test suite files, I hope I don't really have to answer :-)


[Docs] Baseline actor docs and move around some other files as well

Summary
A few small updates to documentation:

Put a stake in the ground on Actor documentation (MVP)
Lleave some placeholders of the protocol documentation to come.
Move around package related documentation
Make configs (which are very detailed) more visible by linking to it from the actor docs

This is intende
Issue

#306

Type of change
Select one or more:

[ ] New feature, functionality or library
[ ] Bug fix
[ ] Code health or cleanup
[x] Documentation
[ ] Other (specify)

Testing

[ ] Run all unit tests: make go_develop_and_test
[ ] Run E2E tests locally: make test_e2e
[ ] Run E2E tests on DevNet: Add the devnet-test-e2e label to the PR. This is VERY expensive, only do it after all the reviews are complete.

Sanity Checklist

[ ] I have tested my changes using the available tooling
[ ] I have performed a self-review of my own code
[ ] I have commented my code, updated documentation and left TODOs throughout the codebase

@Olshansk I addressed the change requests in 0591dcb7b755f517c2d8c2bb0550bec3ad01a252
PTAL and make modification if/where needed.

@red-0ne FYI: https://github.com/pokt-network/poktroll/commit/5a0981da72eed32763fd57fe8f40867f3d5e2a82


Possible to randomize each round?

Hello, is it possible to randomize the loadout each round?

unfortunately, it isn't. only each player's equipped skins are loaded during pregame, so there's no possible way to change them


Shorter prop usage syntax

Hello,
I've been using the project for some days and was really pleased by the lib except for the syntax part which suffer from react/js legacy.
The problem with Props() is that it forces you to type a lot of things and when you start to use apply(...) = apply(Props(...)) you have to type three times your parameters to keep things in sync which is a pain.
I just found a method to shorten the syntax but I haven't tested it a lot so your comments are welcome :
// This is our Props()
case class UserRankingLine(pos:Int, name:String, image:String, score:String)

// A component to display a Ranking
object UserRankingLine extends TypedReactSpec {
  // our Props is the case class
  type Props = UserRankingLine
  // this implicit will run the .apply(o:Props) whenever a Props() needs to be converted into a ReactDOM
  implicit def toReactDOM(o:Props) : ReactDOM = apply(o)

  // our state as usual
  case class State()
  def getInitialState(self:This) = State()

  // render the component
  @scalax def render(self:This) = {

{ self.props.pos }

{ self.props.name }

{ self.props.score }

  }
}

And then you can instantiate your component just like with the regular Component.apply(...) method :
@scalax def render(self:This) = {
  UserRankingLine(1, "User", "img/foo.png", "1000 pts")
}

Maybe the implicit can be pushed up into the hierarchy so users don't have to type it everytime or maybe the case class type could be given as a generic parameter so the implicit could be created inside the TypedReactSpec[T]. I am not sure what could work with the project.
There may be problems with Seq[Component], I am not sure implicits will be run correctly to get Seq[ReactDom], I haven't tested it yet and you may see problems coming :)
Anyway thank you for the awesome work and I hope this little trick will be of some help to simplify the API.

React.renderComponent() is not happy with the method, I have to cast the component to ReactDOM before invoking the renderComponent().
It's no big deal and it works but I am pretty sure it could be improved with a different signature, visible as ReactDOM (<%) instead of extending ReactDOM (<:) not sure about the side effects though.
inferred type arguments [react.PlaceCast] do not conform to method renderComponent's type parameter bounds [C <: com.xored.scalajs.react.ReactDOM]

I just extracted the type and the implicit into a trait and I am pretty happy with the syntax now :
import com.xored.scalajs.react._
import com.xored.scalajs.react.util._

trait Component[T] extends TypedReactSpec {
  type Props = T
  implicit def toReactDOM(o:Props) : ReactDOM = apply(o)
}

This little trait make this possible :
case class MyComponent(name:String, value:String)

object MyComponent extends Component[MyComponent] {
  case class State()
  def getInitialState(self:This) = State()

  @scalax def render(self:This) = {

      { self.props.name } = { self.props.value }

  }
}

Best,
Laurent

Damned :)
This solution pose a problem with optional case class parameters, more work is needed.
in object Button, multiple overloaded alternatives of method apply define default arguments.
[error] The members with defaults are defined in object Button in package react and trait ReactSpec in package react.

Also in some cases the @scalax fail to cast the property class into a ReactDom which is cumbersome.


jfoenix titledpane

Hi! I found nothing in google:
is there any .css for styling titledpane 'like material design' ? or need to do it manually
thanks

Hi @jesa29
Currently you have to do it manually, feel free to add your own contribution to JFoenix.
Regards,

Hi @jesa29,
Well I have some stuffs for you to try with Google's Material on TitledPane.
When Google presented Material, it seems like all components are flat. So, my suggestion here is making titledpane flat, too.
`.titled-pane > .title {
-fx-background-color: transparent;
-fx-pref-height: 0.000001; // I make this small double number because I dont want to use the title of titledpane
}
.titled-pane > .title > .arrow-button .arrow{
-fx-background-color: transparent;
-fx-border-color: transparent;
-fx-padding: 0 0 0 -10; // this is little tricky when you want to hide the arrow and do not know how to hide this arrow
}
.titled-pane > .content
{
-fx-background-color: transparent;
-fx-padding: 0 -1 -1 -1 ; // this padding setting will help you to ignore the U border when you try to set the background color for the content of titledpane. if you don't do this, because the default css of titledpane, it will appear the U border like I said before.
-fx-background-insets: 0 0 0 0; // well you can add this line or not, depending on you
}`
My css is very short because I just use titledpane a little bit to make sub menu. You can use this, I am confident to say that I make material titledpane.
Thank!


Possibly redundant methods in Q2d.py

The Q2d.py file has two methods with the same descriptions:
analyse_from_initial_mesh
analyse_nominal
Only analyse_nominal appears in Q3d.py.
Perhaps the descriptions are wrong in Q2d.py?

Pinging @maxcapodi78

The two methods has different actions.
I noticed that the analyse_nominal as wrong description.
It has not to be "Revert the solution to the initial mesh and re-run the solve."
but it has to be "Solves nominal design."


"Can't find create"

Hi, I just followed the instructions at https://serde.rs/codegen-nightly.html for my first experience of Serde. Whilst building the serde_codegen dependency, cargo barfs with :-
   Compiling serde_codegen_internals v0.10.0
     Running `rustc /Users/raph/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen_internals-0.10.0/src/lib.rs --crate-name serde_codegen_internals --crate-type lib -g -C metadata=7453e4105b65d936 -C extra-filename=-7453e4105b65d936 --out-dir /Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --emit=dep-info,link --target x86_64-unknown-linux-musl -C ar=x86_64-linux-musl-ar -C linker=x86_64-linux-musl-cc -L dependency=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --extern syn=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libsyn-acd6f0256d61d97a.rlib --cap-lints allow -Anon-snake-case -Anon-upper-case-globals -Wtrivial-casts -Wunused-extern-crates -Wunused-import-braces -Wmissing-copy-implementations -Wmissing-debug-implementations -Ddrop_with_repr_extern`
warning: lint drop_with_repr_extern has been removed: drop flags have been removed
  |
  = note: requested on the command line with `-D drop_with_repr_extern`

   Compiling serde_codegen v0.8.14
     Running `rustc /Users/raph/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen-0.8.14/src/lib.rs --crate-name serde_codegen --crate-type lib -g --cfg feature=\"with-syn\" -C metadata=1c2640c6d5d4a61d -C extra-filename=-1c2640c6d5d4a61d --out-dir /Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --emit=dep-info,link --target x86_64-unknown-linux-musl -C ar=x86_64-linux-musl-ar -C linker=x86_64-linux-musl-cc -L dependency=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --extern serde_codegen_internals=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libserde_codegen_internals-7453e4105b65d936.rlib --extern quote=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libquote-90e47f572f455756.rlib --extern syn=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libsyn-acd6f0256d61d97a.rlib --cap-lints allow -Anon-snake-case -Anon-upper-case-globals -Wtrivial-casts -Wunused-extern-crates -Wunused-import-braces -Wmissing-copy-implementations -Wmissing-debug-implementations -Ddrop_with_repr_extern`
warning: lint drop_with_repr_extern has been removed: drop flags have been removed
  |
  = note: requested on the command line with `-D drop_with_repr_extern`

error[E0463]: can't find crate for `syntax`
  --> /Users/raph/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen-0.8.14/src/lib.rs:21:1
   |
21 | extern crate syntax;
   | ^^^^^^^^^^^^^^^^^^^^ can't find crate

error: aborting due to previous error

Build failed, waiting for other jobs to finish...
error: Could not compile `serde_codegen`.

Caused by:
  Process didn't exit successfully: `rustc /Users/raph/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen-0.8.14/src/lib.rs --crate-name serde_codegen --crate-type lib -g --cfg feature="with-syn" -C metadata=1c2640c6d5d4a61d -C extra-filename=-1c2640c6d5d4a61d --out-dir /Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --emit=dep-info,link --target x86_64-unknown-linux-musl -C ar=x86_64-linux-musl-ar -C linker=x86_64-linux-musl-cc -L dependency=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps --extern serde_codegen_internals=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libserde_codegen_internals-7453e4105b65d936.rlib --extern quote=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libquote-90e47f572f455756.rlib --extern syn=/Volumes/Source/GitHub/lemonrock/dpdk/.cargo/target/x86_64-unknown-linux-musl/debug/deps/libsyn-acd6f0256d61d97a.rlib --cap-lints allow -Anon-snake-case -Anon-upper-case-globals -Wtrivial-casts -Wunused-extern-crates -Wunused-import-braces -Wmissing-copy-implementations -Wmissing-debug-implementations -Ddrop_with_repr_extern` (exit code: 101)

I'm using nightly. Any ideas? It's left me stumped.

I have never seen that before but it looks like your compiler and/or cargo may be very old. You should be seeing the following versions or later:
$ rustc --version
  rustc 1.14.0-nightly (16eeeac78 2016-10-18)
$ cargo --version
  cargo 0.13.0-nightly (02fed69 2016-10-18)

If you are using the nightly-only features, you need to use a nightly compiler i.e. update your compiler every night. In general we only ever support the most recent nightly.

Ah! This particular crate is pinned on a specific nightly compiler because of https://github.com/rust-lang/rust/issues/36954

It looks like more of a cargo issue. See whether you can update cargo without updating rustc. I don't know how to do that exactly but #rust IRC might.
Failing that, the other approach will work even on nightly.


Overhaul serializers to eliminate manually defined fields

Description

To further streamline the process of adding new media, this PR updates serializers to almost eliminate manually defined serializer fields.
This PR

moves help_text from serializers to models
drops fields from serializers that can be inferred from models

Testing Instructions

Being a refactoring PR, the differences at the surface level should be minimal. To test, visit each endpoint once (sorry for the big ask) and see that the server never raises any errors or sends a 500 status code.
You can also see the changes to api/catalog/api/examples/image_responses.py and api/catalog/api/examples/audio_responses.py to see the final output changes.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@sarayourfriend since the output is not being changed, I'd recommend #557 proceed with the tests based on serializers as on main and we can update this PR to include those tests when ready.

Okay! I was mostly trying to get around at least three of us going through each API endpoint and verifying it works locally :sweat_smile:

@sarayourfriend fair point, I anticipated this. So I'll try to that a little easier. You won't have to manually go to each API endpoint and diff the output.

^ That was an accident, sorry.

The goal was to ensure that the search results and the details endpoint should follow as close a schema as possible by avoiding the use of required=False. Extra fields can be ignored by the client but a serializer choosing to omit fields if they're null can be chaotic.

Makes sense, thanks for the explanation.
What's the testing strategy for this? I saw that the "visit each endpoint and verify it" is crossed out. But the sample responses aren't automatically generated are they? Is anything comparing those against the actual data coming from the API this PR produces?

@sarayourfriend the example responses are compared by actually making a request to the API and checking if the JSON matches exactly. It tests the API by checking both search results and detail pages.

I'm merging this to unblock API deployment. We can surely fix any smaller issues that come up in hotfixes.

Sounds good @dhruvkb :+1:


Adding .MD documentation file for SumTotal connector reference

for Bob Zhang review

Hi @Gareth-Rodrigues - as mentioned in demo today please update the documentation PR with the updated wording around expecting a script error on connect.


Add user input in setup.py for the API key so that a pip install can get the code running

Need to do this so setup.py can also set up the API key during installation as another way to setup the project:
To permanently save the API key from setup.py to the user's environment, you can make use of environment variables. Here's how you can do it:

Open the setup.py file in a text editor.
Add the following code at the beginning of the file:

import os

# Check if the API key is already set as an environment variable
if 'API_KEY' not in os.environ:
    api_key = input('Enter your API key: ')
    os.environ['API_KEY'] = api_key

Hi! I would like to work on this issue

@marcolab yes please get started on this, appreciate your help, please make sure to look at the contribution guide for how to make this update

@espin086 I've looked into it and it seems like it is not possible to add user input to setup.py. Perhaps an alternative solution could be to have an additional pip installation option (as shown here), but it might be overkill

@marcolab - can you try the input() function built into python?
Here is what I was thinking:
import os
# Check if the environmental variable is present
if 'ENV_VARIABLE_NAME' in os.environ:
    env_variable = os.environ['ENV_VARIABLE_NAME']
else:
    # If the environmental variable is not present, prompt the user for input
    env_variable = input("Enter the value for ENV_VARIABLE_NAME: ")

maybe we can do this using cli?


Missing trainer for ImageNet?

Hi, @pingxue-hfut :
Thanks for sharing your excellent works!
And replication with the code on CIFAR10 is quite fluent and with success!
However, it seems the trainer for experiments on ImageNet is missing in your repo.
Could you please kindly make it right and work?
Thanks in advance.
Cheers

The code is closely related to our current work and cannot be provided temporarily. You can refer to https://github.com/brais-martinez/real2binary, or to the comments in the code file describing the training scheme. Sorry for the inconvenience.


Write a C# program to print character of an ascii value

Description
Write a C# program to print character of an ascii value
ASCII value is the numeric representation of a character. For example, the ASCII value of the character 'A' is 65. The ASCII value of the character 'a' is 97. The ASCII value of the character '0' is 48. The ASCII value of the character ' ' is 32.
Input  : 65
Output : A

How to contribute

Save the solution in PrintCharacterOfAnAsciiValue.cs file
Add PrintCharacterOfAnAsciiValue.cs file in print-character-of-an-ascii-value folder

!assign


Add spacelift client type request header

@michieldewilde I was off next week so maybe I missed it, but is there a central place where all the clients can be viewed and documented?
Also, let us know if we need to add this header to the calls made from k8s controller 🙏🏻


Shoulda-style RSpec matchers

Hi there,
I've been using this on a project and found myself wanting the kind of RSpec matchers that you get for ActionMailer when you use Shoulda. So I wrote 'em.
Thanks,
Phil

Thanks :)


Rubinius does not like "multipart: {file: image}" in tests.

Rubinius does not like "multipart: {file: image}" in shrine's tests.
We are getting following error 9+1 (10) times in one test file, direct_upload_test.rb, on Travis:

NoMethodError: undefined method `add' on an instance of Array.
https://travis-ci.org/janko-m/shrine/jobs/98983378

320 runs, 517 assertions, 1 failures, 9 errors, 0 skips

To reproduce it, I change my rvm locally to "rvm install rbx-2.9" and ran "bundle"/"rake" and got same results.
You can also run this: "rake test TEST=test/plugin/direct_upload_test.rb".
Question: Is there another way to specify the "multipart: {file: image}" in this file: test/plugin/direct_upload_test.rb"?
Here is the line in the rack-test_app gem: lib/rack/test_app.rb:230:  * v.is_a?(::File) ? mp.add_file(k, v) : mp.add(k, v.to_s)

Thanks, I've already isolated the bug before, and raised an issue on Rubinius (https://github.com/rubinius/rubinius/issues/3544). I've tried to see if that part in rack-test_app can be written a bit differently, but it would have to be a big change.
I will make these tests pending for Rubinius for now, until it is resolved and a new Rubinius version is released.

Thanks for your response.


Make parameter optional

My bad :-\

Wasn't really wrong, but let's go.

It just wasn't backward compatible

It just wasn't backward compatible

Yes, consistent with semantic versioning, but better to be bw-comp. 👍


projector scroll should move more slightly.

Moved from #2053

@emanuelschuetze Closed with PR #2866 .


BaseActiveRecord::findOne and phpdoc

why here https://github.com/yiisoft/yii2/blob/master/framework/db/BaseActiveRecord.php#L97 write that return static, may be need fix to static|null ?

fixed, thanks!

@cebe thx for you

@cebe, after this fix, autocompled in my code not work.
$model = Model::findOne(['id' => $id]);
$model->name = $someName;

$model->name defind as error in PhpStorm 8.0.3 1139.1348
Only I have this error? If i delete "|null" it's works ok.

yes, accept. self|null fix it

and apparently so was such a comment

In my case "self|null", not fix this.

which version of PHPStorm are you using?

@cebe 8.0.1
in current case static|null
$model = my\Model::findOne($id);
$model->[here autocomplete to current controller]

http://blog.jetbrains.com/phpstorm/2014/07/phpstorm-8-eap-138-1161/
Fluent-style chaining type loss with return this/static fixed, and many other PHP language related issues are resolved

@cebe PhpStorm 8.0.3 1139.1348 it's a last build.

@ShNURoK42 u have analog behavior https://github.com/yiisoft/yii2/issues/7404#issuecomment-75837170 ?

@lynicidn yes, with static|null autocomplete show current controller.

does yii2 has official support for IDE's or errors found on IDE's?

This looks like a bug in PHPStorm then, can you report an issue over there?

i think it https://youtrack.jetbrains.com/issue/WI-24216

as i write https://youtrack.jetbrains.com/issue/WI-19953#comment=27-606838 it work for me


MoviePY can't detect ImageMagick binary (windows)

Describe the bug
Sometimes the Backend/main.py can't be started and I receive the following errors:
(venv) PS E:\Development\Python\yt-automate\Backend> python main.py
Traceback (most recent call last):
  File "E:\Development\Python\yt-automate\Backend\main.py", line 4, in <module>
    from video import *
  File "E:\Development\Python\yt-automate\Backend\video.py", line 8, in <module>
    from moviepy.editor import *
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\editor.py", line 36, in <module>
    from .video.io.VideoFileClip import VideoFileClip
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\video\io\VideoFileClip.py", line 3, in <module>
    from moviepy.audio.io.AudioFileClip import AudioFileClip
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\audio\io\AudioFileClip.py", line 3, in <module>
    from moviepy.audio.AudioClip import AudioClip
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\audio\AudioClip.py", line 7, in <module>
    from moviepy.audio.io.ffmpeg_audiowriter import ffmpeg_audiowrite
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 7, in <module>
    from moviepy.config import get_setting
  File "E:\Development\Python\yt-automate\venv\lib\site-packages\moviepy\config.py", line 67, in <module>
    raise IOError(
OSError: ImageMagick binary cannot be found at "C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe" # Download from https://imagemagick.org/script/download.php

To Reproduce
Steps to reproduce the behavior:

Clone repo
Create venv and install requirements.txt
cd /Backend and python main.py
See error

Expected behavior
Starting of the backend process
Desktop (please complete the following information):

OS: Windows 11
Python 3.10.6 (venv)

Additional context
It's feels kinda random.. I had the same issue yesterday too, when testing in between.. It was working before, and all the sudden it stopped working. I deleted the venv and re-installed requirements.txt in new venv.. It started working again, but now it doesn't.
I have verified the install paths mentioned in the OSError, the file is still there.

Inside my .env I have:
IMAGEMAGICK_BINARY="C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe"
Also, after reading some similar issues online, tried to hardcore the path inside main.py:
change_settings({"IMAGEMAGICK_BINARY": r"C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe"})
But same error notification..

Check out this thread: https://stackoverflow.com/questions/51928807/moviepy-cant-detect-imagemagick-binary-on-windows
I'm not quite sure what the cause of this issue is, but maybe try re-installing ImageMagick.

I found the same article, re-installed using the settings mentioned (including: legacy utilities). But that didn't resolve. Still have the same error as mentioned above. Will try to find solution and update the issue when found.

I was experiencing this issue but was able to fix it. The path that worked for me on mac was:
/opt/homebrew/opt/imagemagick/bin/magick
Downloading the binary and loading it from the MoneyPrinter directory didn't work for me for some reason (could have been permissions)

I had a similar problem in Ubuntu (WSL) and to solve it I just gave all file permissions to the magic executable file

Works with single slashes for me on Windows 11:
IMAGEMAGICK_BINARY="C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe" # Download from https://imagemagick.org/script/download.php

Works with single slashes for me on Windows 11:
IMAGEMAGICK_BINARY="C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe" # Download from https://imagemagick.org/script/download.php

I had it like this initially and worked the whole evening.. until I restarted vscode it didn't work anymore.. I think it's more related to ImageMagick, and not this yt shorts generator epo.. thanks for the response though 💪


chainload.py: reconnect after reboot (useful for USB)

Try to reconnect on exception: needed for USB link.
Note: not tested on UART.
Signed-off-by: Jean-Francois Bortolotti<EMAIL_ADDRESS>

Hi, this should be fixed in fcd103b (this is why I had the wait_boot() function, it was just missing this logic). Please let me know if this works for you :)


Unable to deploy an EKS Anywhere simple cluster (Bare Metal) - hangs on "Creating new workload" step

Hello everyone!
I'm trying to run a very simple EKS anywhere cluster and it hangs on the creation - "Creating new workload" step
My cluster YAML file:
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: Cluster
metadata:
  name: bm-anywhere-cluster
spec:
  clusterNetwork:
    cniConfig:
      cilium: {}
    pods:
      cidrBlocks:
      - <IP_ADDRESS>/16
    services:
      cidrBlocks:
      - <IP_ADDRESS>/12
  controlPlaneConfiguration:
    count: 1
    endpoint:
      host: "<IP_ADDRESS>"
    machineGroupRef:
      kind: TinkerbellMachineConfig
      name: bm-anywhere-cluster-cp
  datacenterRef:
    kind: TinkerbellDatacenterConfig
    name: bm-anywhere-cluster
  kubernetesVersion: "1.28"
  managementCluster:
    name: bm-anywhere-cluster
  workerNodeGroupConfigurations:
  - count: 1
    machineGroupRef:
      kind: TinkerbellMachineConfig
      name: bm-anywhere-cluster
    name: md-0

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellDatacenterConfig
metadata:
  name: bm-anywhere-cluster
spec:
  tinkerbellIP: "<IP_ADDRESS>"

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellMachineConfig
metadata:
  name: bm-anywhere-cluster-cp
spec:
  hardwareSelector:
    type: control-plan
  osFamily: bottlerocket
  templateRef: {}
  users:
  - name: ec2-user
    sshAuthorizedKeys:
    - ssh-rsa ssh-rsa <hidden string>

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellMachineConfig
metadata:
  name: bm-anywhere-cluster
spec:
  hardwareSelector:
    type: worker
  osFamily: bottlerocket
  templateRef: {}
  users:
  - name: ec2-user
    sshAuthorizedKeys:
    - ssh-rsa <hidden string>

---

Explainmention about the IPs and blocks I provided in the file:
<IP_ADDRESS>/16 - there's no existing subnet on my network I just left it as the default
<IP_ADDRESS>/12 - there's no existing subnet on my network I just left it as the default
spec.controlPlaneConfiguration.endpoint.host - <IP_ADDRESS>: This is an available IP on my network existing subnet (this subnet has access to the internet).
tinkerbellIP - <IP_ADDRESS>: This is an available IP on my network existing subnet (this subnet has access to the internet)
When I'm creating the EKS Anywhere cluster it hangs.
eksctl anywhere create cluster -v=9 -f bm-anywhere-cluster.yaml -z hardware.csv

......
......
......

2024-01-31T12:26:32.523+0200    V0      Creating new workload cluster
2024-01-31T12:26:32.524+0200    V5      Adding extraArgs        {"tls-cipher-suites": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"}
2024-01-31T12:26:32.525+0200    V5      Adding extraArgs        {"tls-cipher-suites": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"}
2024-01-31T12:26:32.525+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-01-31T12:26:32.525+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl apply -f - --namespace eksa-system --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T12:26:32.904+0200    V5      Retry execution successful      {"retries": 1, "duration": "378.235373ms"}
2024-01-31T12:26:32.904+0200    V3      Waiting for control plane to be available
2024-01-31T12:26:32.904+0200    V5      Retrier:        {"timeout": "1h0m0s", "backoffFactor": null}
2024-01-31T12:26:32.904+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl wait --timeout 3600.00s --for=condition=ControlPlaneInitialized clusters.cluster.x-k8s.io/bm-anywhere-cluster --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n eksa-system"}
2024-01-31T13:26:33.096+0200    V9      docker  {"stderr": "error: timed out waiting for the condition on clusters/bm-anywhere-cluster\n"}
2024-01-31T13:26:33.096+0200    V5      Error happened during retry     {"error": "executing wait: error: timed out waiting for the condition on clusters/bm-anywhere-cluster\n", "retries": 1}
2024-01-31T13:26:33.096+0200    V5      Execution aborted by retry policy
2024-01-31T13:26:33.096+0200    V4      Task finished   {"task_name": "workload-cluster-init", "duration": "1h0m0.573792207s"}
2024-01-31T13:26:33.096+0200    V4      ----------------------------------
2024-01-31T13:26:33.096+0200    V4      Task start      {"task_name": "collect-cluster-diagnostics"}
2024-01-31T13:26:33.096+0200    V0      collecting cluster diagnostics
2024-01-31T13:26:33.096+0200    V0      collecting management cluster diagnostics
2024-01-31T13:26:33.107+0200    V3      bundle config written   {"path": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:33+02:00-bundle.yaml"}
2024-01-31T13:26:33.107+0200    V1      creating temporary namespace for diagnostic collector   {"namespace": "eksa-diagnostics"}
2024-01-31T13:26:33.107+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-01-31T13:26:33.107+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl create namespace eksa-diagnostics --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T13:26:33.263+0200    V5      Retry execution successful      {"retries": 1, "duration": "155.703042ms"}
2024-01-31T13:26:33.263+0200    V1      creating temporary ClusterRole and RoleBinding for diagnostic collector
2024-01-31T13:26:33.263+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-01-31T13:26:33.263+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl apply -f - --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T13:26:33.510+0200    V5      Retry execution successful      {"retries": 1, "duration": "246.957482ms"}
2024-01-31T13:26:33.510+0200    V0      ⏳ Collecting support bundle from cluster, this can take a while        {"cluster": "bootstrap-cluster", "bundle": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:33+02:00-bundle.yaml", "since": "2024-01-31T10:26:33.107+0200", "kubeconfig": "bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T13:26:33.510+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 support-bundle bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:33+02:00-bundle.yaml --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig --interactive=false --since-time 2024-01-31T10:26:33.107500907+02:00"}
2024-01-31T13:26:40.926+0200    V0      Support bundle archive created  {"path": "support-bundle-2024-01-31T11_26_33.tar.gz"}
2024-01-31T13:26:40.926+0200    V0      Analyzing support bundle        {"bundle": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:33+02:00-bundle.yaml", "archive": "support-bundle-2024-01-31T11_26_33.tar.gz"}
2024-01-31T13:26:40.926+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 support-bundle analyze bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:33+02:00-bundle.yaml --bundle support-bundle-2024-01-31T11_26_33.tar.gz --output json"}
2024-01-31T13:26:41.211+0200    V0      Analysis output generated       {"path": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-01-31T13:26:41+02:00-analysis.yaml"}
2024-01-31T13:26:41.211+0200    V1      cleaning up temporary roles for diagnostic collectors
2024-01-31T13:26:41.211+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-01-31T13:26:41.211+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl delete -f - --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T13:26:41.374+0200    V5      Retry execution successful      {"retries": 1, "duration": "163.248996ms"}
2024-01-31T13:26:41.374+0200    V1      cleaning up temporary namespace  for diagnostic collectors      {"namespace": "eksa-diagnostics"}
2024-01-31T13:26:41.374+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-01-31T13:26:41.374+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1706696683359269153 kubectl delete namespace eksa-diagnostics --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-01-31T13:26:46.905+0200    V5      Retry execution successful      {"retries": 1, "duration": "5.530672342s"}
2024-01-31T13:26:46.905+0200    V0      collecting workload cluster diagnostics
2024-01-31T13:26:46.905+0200    V4      Task finished   {"task_name": "collect-cluster-diagnostics", "duration": "13.808803162s"}
2024-01-31T13:26:46.905+0200    V4      ----------------------------------
2024-01-31T13:26:46.905+0200    V4      Saving checkpoint       {"file": "bm-anywhere-cluster-checkpoint.yaml"}
2024-01-31T13:26:46.906+0200    V4      Tasks completed {"duration": "1h2m1.226833399s"}
2024-01-31T13:26:46.906+0200    V3      Cleaning up long running container      {"name": "eksa_1706696683359269153"}
2024-01-31T13:26:46.906+0200    V6      Executing command       {"cmd": "/usr/bin/docker rm -f -v eksa_1706696683359269153"}
Error: waiting for control plane to be ready: executing wait: executing wait: error: timed out waiting for the condition on clusters/bm-anywhere-cluster

Docker boots logs shows:
docker logs -f boots
{"level":"info","ts":1706696738.415058,"caller":"boots/main.go:119","msg":"starting","service":"github.com/tinkerbell/boots","pkg":"main","version":"8fd5c38"}
{"level":"info","ts":1706696738.4281049,"caller":"boots/main.go:186","msg":"serving iPXE binaries from local HTTP server","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>/ipxe/"}
{"level":"info","ts":1706696738.4281282,"caller":"boots/main.go:128","msg":"serving syslog","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:514"}
{"level":"info","ts":1706696738.4281378,"caller":"boots/main.go:205","msg":"serving dhcp","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:67"}
{"level":"info","ts":1706696738.4281623,"caller":"boots/main.go:212","msg":"serving http","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:80"}
{"level":"info","ts":1706696738.4282918,"logger":"github.com/tinkerbell/ipxedust","caller":"ipxedust@v0.0.0-20230118215055-b00d1b371ddf/ipxedust.go:194","msg":"serving iPXE binaries via TFTP","service":"github.com/tinkerbell/boots","addr":"<IP_ADDRESS>:69","timeout":5,"singlePortEnabled":true}
{"level":"info","ts":1706699115.5887766,"caller":"dhcp4-go@v0.0.0-20190402165401-39c137f31ad3/handler.go:105","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"recv","mac":"00:50:b6:ec:9a:53","via":"<IP_ADDRESS>","iface":"eno2","xid":"\"84:13:be:6b\"","type":"DHCPREQUEST"}
{"level":"info","ts":1706699115.5889626,"caller":"boots/dhcp.go:88","msg":"parsed option82/circuitid","service":"github.com/tinkerbell/boots","pkg":"main","mac":"00:50:b6:ec:9a:53","circuitID":""}
{"level":"error","ts":1706699115.5893145,"caller":"boots/dhcp.go:101","msg":"retrieved job is empty","service":"github.com/tinkerbell/boots","pkg":"main","type":"DHCPREQUEST","mac":"00:50:b6:ec:9a:53","error":"discover from dhcp message: no hardware found","errorVerbose":"no hardware found\ngithub.com/tinkerbell/boots/client/kubernetes.(*Finder).ByMAC\n\tgithub.com/tinkerbell/boots/client/kubernetes/hardware_finder.go:96\ngithub.com/tinkerbell/boots/job.(*Creator).CreateFromDHCP\n\tgithub.com/tinkerbell/boots/job/job.go:107\nmain.dhcpHandler.serve\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:99\nmain.dhcpHandler.ServeDHCP.func1\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:60\ngithub.com/gammazero/workerpool.(*WorkerPool).dispatch.func1\n\tgithub.com/gammazero/workerpool@v0.0.0-20200311205957-7b00833861c6/workerpool.go:169\nruntime.goexit\n\truntime/asm_amd64.s:1571\ndiscover from dhcp message"}

Hello, can you verify that this hardware selector type should be control-plan and not control-plane?
spec:
  hardwareSelector:
    type: control-plan

Could you also run kubectl get hardware -A --show-labels and kubectl get workflows -A and post the output here?

Hi ahreehong, thank you for the response!
It was control-plan on the YAML file and the hardware.csv file and I changed it to control-plane on both files.
However, I'm still getting the same error when I'm creating the cluster.
This is the output you were asked about:
$ kubectl get hardware -A --show-labels
NAMESPACE     NAME   STATE   LABELS
eksa-system   u3             type=control-plane,v1alpha1.tinkerbell.org/ownerName=bm-anywhere-cluster-control-plane-template-1706778218833-zd49r,v1alpha1.tinkerbell.org/ownerNamespace=eksa-system
eksa-system   u4             type=worker

$ kubectl get workflows -A
NAMESPACE     NAME                                                             TEMPLATE                                                         STATE
eksa-system   bm-anywhere-cluster-control-plane-template-1706778218833-zd49r   bm-anywhere-cluster-control-plane-template-1706778218833-zd49r   STATE_PENDING

My hardware.csv file is:
$ cat hardware.csv
hostname,mac,ip_address,gateway,netmask,nameservers,labels,disk
u4,<hidden mac>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,type=worker,/dev/sda1
u3,<hidden mac>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,type=control-plan,/dev/sda1

Any suggestion?

Hi @terry-hasegawa, thank you for the response!
Yes, the hardware file MACs were wrong.
We did change the hardware.csv and the config file.
I'll post here the content of both with some logs, please let us know how we could get more logs (if it's by running commands or taking a look in log files).
hardware.csv:
hostname,mac,ip_address,gateway,netmask,nameservers,labels,disk
u4,<hidden mac>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,node=worker,/dev/sda2
u3,<hidden mac>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,node=cp-machine,/dev/nvme0n1p2

YAML config
$ cat bm-anywhere-cluster.yaml
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: Cluster
metadata:
  name: bm-anywhere-cluster
spec:
  clusterNetwork:
    cniConfig:
      cilium: {}
    pods:
      cidrBlocks:
      - <IP_ADDRESS>/16
    services:
      cidrBlocks:
      - <IP_ADDRESS>/12
  controlPlaneConfiguration:
    count: 1
    endpoint:
      host: "<IP_ADDRESS>"
    machineGroupRef:
      kind: TinkerbellMachineConfig
      name: bm-anywhere-cluster-cp
  datacenterRef:
    kind: TinkerbellDatacenterConfig
    name: bm-anywhere-cluster
  kubernetesVersion: "1.28"
  managementCluster:
    name: bm-anywhere-cluster
  workerNodeGroupConfigurations:
  - count: 1
    machineGroupRef:
      kind: TinkerbellMachineConfig
      name: bm-anywhere-cluster
    name: md-0

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellDatacenterConfig
metadata:
  name: bm-anywhere-cluster
spec:
  tinkerbellIP: "<IP_ADDRESS>"

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellMachineConfig
metadata:
  name: bm-anywhere-cluster-cp
spec:
  hardwareSelector:
    node: cp-machine
  osFamily: bottlerocket
  templateRef: {}
  users:
  - name: user
    sshAuthorizedKeys:
    - ssh-rsa <hidden string>

---
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellMachineConfig
metadata:
  name: bm-anywhere-cluster
spec:
  hardwareSelector:
    node: worker
  osFamily: bottlerocket
  templateRef: {}
  users:
  - name: user
    sshAuthorizedKeys:
    - ssh-rsa <hidden string>
---

Creating cluster with verbose 9:
$ eksctl anywhere create cluster -v=9 -f bm-anywhere-cluster.yaml -z hardware.csv
2024-02-06T16:21:48.353+0200    V0      Warning: The recommended number of control plane nodes is 3 or 5
2024-02-06T16:21:48.353+0200    V6      Executing command       {"cmd": "/usr/bin/docker version --format {{.Client.Version}}"}
2024-02-06T16:21:48.367+0200    V6      Executing command       {"cmd": "/usr/bin/docker info --format '{{json .MemTotal}}'"}
2024-02-06T16:21:48.528+0200    V4      Reading bundles manifest        {"url": "https://anywhere-assets.eks.amazonaws.com/releases/bundles/57/manifest.yaml"}
2024-02-06T16:21:48.574+0200    V4      Using CAPI provider versions    {"Core Cluster API": "v1.5.2+0f93bc6", "Kubeadm Bootstrap": "v1.5.2+ff11797", "Kubeadm Control Plane": "v1.5.2+72f2d97", "External etcd Bootstrap": "v1.0.10+d1f944b", "External etcd Controller": "v1.0.16+d73980e", "Cluster API Provider Tinkerbell": "v0.4.0+2823545"}
2024-02-06T16:21:48.714+0200    V0      Warning: The recommended number of control plane nodes is 3 or 5
2024-02-06T16:21:48.714+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T16:21:48.714+0200    V2      Pulling docker image    {"image": "public.ecr.aws/eks-anywhere/cli-tools:v0.18.5-eks-a-57"}
2024-02-06T16:21:48.714+0200    V6      Executing command       {"cmd": "/usr/bin/docker pull public.ecr.aws/eks-anywhere/cli-tools:v0.18.5-eks-a-57"}
2024-02-06T16:21:50.577+0200    V5      Retry execution successful      {"retries": 1, "duration": "1.862730351s"}
2024-02-06T16:21:50.577+0200    V3      Initializing long running container     {"name": "eksa_1707229308714880618", "image": "public.ecr.aws/eks-anywhere/cli-tools:v0.18.5-eks-a-57"}
2024-02-06T16:21:50.578+0200    V6      Executing command       {"cmd": "/usr/bin/docker run -d --name eksa_1707229308714880618 --network host -w /home/user/original-guide/4 -v /var/run/docker.sock:/var/run/docker.sock -v /home/user/original-guide/4:/home/user/original-guide/4 -v /home/user/original-guide/4:/home/user/original-guide/4 --entrypoint sleep public.ecr.aws/eks-anywhere/cli-tools:v0.18.5-eks-a-57 infinity"}
2024-02-06T16:21:50.824+0200    V4      Inferring local Tinkerbell Bootstrap IP from environment
2024-02-06T16:21:50.824+0200    V4      Tinkerbell IP   {"tinkerbell-ip": "<IP_ADDRESS>"}
2024-02-06T16:21:50.824+0200    V4      Task start      {"task_name": "setup-validate"}
2024-02-06T16:21:50.824+0200    V0      Performing setup and validations
2024-02-06T16:21:50.824+0200    V6      Executing command       {"cmd": "/usr/bin/docker container inspect boots"}
2024-02-06T16:21:50.835+0200    V9      docker  {"stderr": "Error response from daemon: No such container: boots\n"}
2024-02-06T16:21:51.838+0200    V0      ✅ Tinkerbell Provider setup is valid
2024-02-06T16:21:51.838+0200    V0      ✅ Validate OS is compatible with registry mirror configuration
2024-02-06T16:21:51.838+0200    V0      ✅ Validate certificate for registry mirror
2024-02-06T16:21:51.838+0200    V0      ✅ Validate authentication for git provider
2024-02-06T16:21:51.838+0200    V0      ✅ Validate cluster's eksaVersion matches EKS-A version
2024-02-06T16:21:51.838+0200    V4      Task finished   {"task_name": "setup-validate", "duration": "1.014177661s"}
2024-02-06T16:21:51.838+0200    V4      ----------------------------------
2024-02-06T16:21:51.838+0200    V4      Task start      {"task_name": "bootstrap-cluster-init"}
2024-02-06T16:21:51.838+0200    V0      Creating new bootstrap cluster
2024-02-06T16:21:51.839+0200    V4      Creating kind cluster   {"name": "bm-anywhere-cluster-eks-a-cluster", "kubeconfig": "bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:21:51.839+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kind create cluster --name bm-anywhere-cluster-eks-a-cluster --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig --image public.ecr.aws/eks-anywhere/kubernetes-sigs/kind/node:v1.28.4-eks-d-1-28-13-eks-a-57 --config bm-anywhere-cluster/generated/kind_tmp.yaml"}
2024-02-06T16:22:05.857+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T16:22:05.857+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl get namespace eksa-system --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:22:06.022+0200    V9      docker  {"stderr": "Error from server (NotFound): namespaces \"eksa-system\" not found\n"}
2024-02-06T16:22:06.022+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl create namespace eksa-system --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:22:06.169+0200    V5      Retry execution successful      {"retries": 1, "duration": "312.378827ms"}
2024-02-06T16:22:06.169+0200    V0      Provider specific pre-capi-install-setup on bootstrap cluster
2024-02-06T16:22:06.169+0200    V4      Installing Tinkerbell stack on bootstrap cluster
2024-02-06T16:22:06.169+0200    V6      Installing Tinkerbell helm chart
2024-02-06T16:22:06.169+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i -e HELM_EXPERIMENTAL_OCI=1 -e NO_PROXY= -e HTTPS_PROXY= -e HTTP_PROXY= eksa_1707229308714880618 helm upgrade --install tinkerbell-chart oci://public.ecr.aws/eks-anywhere/tinkerbell/tinkerbell-chart --version 0.2.4-eks-a-57 --values bm-anywhere-cluster/generated/tinkerbell-chart-overrides.yaml --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig --wait"}
2024-02-06T16:22:40.527+0200    V6      Executing command       {"cmd": "/usr/bin/docker run -d -i -v /home/user/original-guide/4/bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig:/kubeconfig --network host -e PUBLIC_IP=<IP_ADDRESS> -e PUBLIC_SYSLOG_IP=<IP_ADDRESS> -e BOOTS_KUBE_NAMESPACE=eksa-system -e DATA_MODEL_VERSION=kubernetes -e TINKERBELL_TLS=false -e TINKERBELL_GRPC_AUTHORITY=<IP_ADDRESS>:42113 -e BOOTS_EXTRA_KERNEL_ARGS=tink_worker_image=public.ecr.aws/eks-anywhere/tinkerbell/tink/tink-worker:v0.8.0-eks-a-57 --name boots public.ecr.aws/eks-anywhere/tinkerbell/boots:v0.8.1-eks-a-57 -kubeconfig /kubeconfig -dhcp-addr <IP_ADDRESS>:67 -osie-path-override https://anywhere-assets.eks.amazonaws.com/releases/bundles/57/artifacts/hook/9d54933a03f2f4c06322969b06caa18702d17f66"}
2024-02-06T16:22:41.903+0200    V0      Installing cluster-api providers on bootstrap cluster
2024-02-06T16:22:49.086+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i -e TINKERBELL_IP=IGNORED -e KUBEADM_BOOTSTRAP_TOKEN_TTL=120m eksa_1707229308714880618 clusterctl init --core cluster-api:v1.5.2+0f93bc6 --bootstrap kubeadm:v1.5.2+ff11797 --control-plane kubeadm:v1.5.2+72f2d97 --infrastructure tinkerbell:v0.4.0+2823545 --config bm-anywhere-cluster/generated/clusterctl_tmp.yaml --bootstrap etcdadm-bootstrap:v1.0.10+d1f944b --bootstrap etcdadm-controller:v1.0.16+d73980e --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:23:08.679+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:08.679+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/capi-kubeadm-bootstrap-controller-manager --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n capi-kubeadm-bootstrap-system"}
2024-02-06T16:23:20.954+0200    V5      Retry execution successful      {"retries": 1, "duration": "12.274894734s"}
2024-02-06T16:23:20.954+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:20.954+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/capi-kubeadm-control-plane-controller-manager --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n capi-kubeadm-control-plane-system"}
2024-02-06T16:23:29.005+0200    V5      Retry execution successful      {"retries": 1, "duration": "8.051081472s"}
2024-02-06T16:23:29.005+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:29.005+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/capi-controller-manager --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n capi-system"}
2024-02-06T16:23:29.264+0200    V5      Retry execution successful      {"retries": 1, "duration": "259.294211ms"}
2024-02-06T16:23:29.265+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:29.265+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/cert-manager --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n cert-manager"}
2024-02-06T16:23:29.558+0200    V5      Retry execution successful      {"retries": 1, "duration": "293.641ms"}
2024-02-06T16:23:29.558+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:29.558+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/cert-manager-cainjector --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n cert-manager"}
2024-02-06T16:23:29.840+0200    V5      Retry execution successful      {"retries": 1, "duration": "281.816935ms"}
2024-02-06T16:23:29.840+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:29.840+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/cert-manager-webhook --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n cert-manager"}
2024-02-06T16:23:30.085+0200    V5      Retry execution successful      {"retries": 1, "duration": "244.775925ms"}
2024-02-06T16:23:30.085+0200    V5      Retrier:        {"timeout": "30m0s", "backoffFactor": null}
2024-02-06T16:23:30.085+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 1800.00s --for=condition=Available deployments/capt-controller-manager --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n capt-system"}
2024-02-06T16:23:35.036+0200    V5      Retry execution successful      {"retries": 1, "duration": "4.950310288s"}
2024-02-06T16:23:35.036+0200    V0      Provider specific post-setup
2024-02-06T16:23:35.038+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl apply -f - --force --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:23:35.853+0200    V4      Task finished   {"task_name": "bootstrap-cluster-init", "duration": "1m44.01464722s"}
2024-02-06T16:23:35.853+0200    V4      ----------------------------------
2024-02-06T16:23:35.853+0200    V4      Task start      {"task_name": "workload-cluster-init"}
2024-02-06T16:23:35.853+0200    V0      Creating new workload cluster
2024-02-06T16:23:35.854+0200    V5      Adding extraArgs        {"tls-cipher-suites": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"}
2024-02-06T16:23:35.855+0200    V5      Adding extraArgs        {"tls-cipher-suites": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"}
2024-02-06T16:23:35.855+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T16:23:35.855+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl apply -f - --namespace eksa-system --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T16:23:36.166+0200    V5      Retry execution successful      {"retries": 1, "duration": "310.193335ms"}
2024-02-06T16:23:36.166+0200    V3      Waiting for control plane to be available
2024-02-06T16:23:36.166+0200    V5      Retrier:        {"timeout": "1h0m0s", "backoffFactor": null}
2024-02-06T16:23:36.166+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl wait --timeout 3600.00s --for=condition=ControlPlaneInitialized clusters.cluster.x-k8s.io/bm-anywhere-cluster --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig -n eksa-system"}
2024-02-06T17:23:36.344+0200    V9      docker  {"stderr": "error: timed out waiting for the condition on clusters/bm-anywhere-cluster\n"}
2024-02-06T17:23:36.344+0200    V5      Error happened during retry     {"error": "executing wait: error: timed out waiting for the condition on clusters/bm-anywhere-cluster\n", "retries": 1}
2024-02-06T17:23:36.344+0200    V5      Execution aborted by retry policy
2024-02-06T17:23:36.344+0200    V4      Task finished   {"task_name": "workload-cluster-init", "duration": "1h0m0.491246572s"}
2024-02-06T17:23:36.344+0200    V4      ----------------------------------
2024-02-06T17:23:36.344+0200    V4      Task start      {"task_name": "collect-cluster-diagnostics"}
2024-02-06T17:23:36.344+0200    V0      collecting cluster diagnostics
2024-02-06T17:23:36.344+0200    V0      collecting management cluster diagnostics
2024-02-06T17:23:36.356+0200    V3      bundle config written   {"path": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:36+02:00-bundle.yaml"}
2024-02-06T17:23:36.356+0200    V1      creating temporary namespace for diagnostic collector   {"namespace": "eksa-diagnostics"}
2024-02-06T17:23:36.356+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T17:23:36.356+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl create namespace eksa-diagnostics --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T17:23:36.927+0200    V5      Retry execution successful      {"retries": 1, "duration": "571.578018ms"}
2024-02-06T17:23:36.927+0200    V1      creating temporary ClusterRole and RoleBinding for diagnostic collector
2024-02-06T17:23:36.927+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T17:23:36.927+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl apply -f - --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T17:23:37.569+0200    V5      Retry execution successful      {"retries": 1, "duration": "641.636662ms"}
2024-02-06T17:23:37.569+0200    V0      ⏳ Collecting support bundle from cluster, this can take a while        {"cluster": "bootstrap-cluster", "bundle": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:36+02:00-bundle.yaml", "since": "2024-02-06T14:23:36.356+0200", "kubeconfig": "bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T17:23:37.569+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 support-bundle bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:36+02:00-bundle.yaml --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig --interactive=false --since-time 2024-02-06T14:23:36.356076127+02:00"}
2024-02-06T17:23:56.446+0200    V0      Support bundle archive created  {"path": "support-bundle-2024-02-06T15_23_38.tar.gz"}
2024-02-06T17:23:56.446+0200    V0      Analyzing support bundle        {"bundle": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:36+02:00-bundle.yaml", "archive": "support-bundle-2024-02-06T15_23_38.tar.gz"}
2024-02-06T17:23:56.446+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 support-bundle analyze bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:36+02:00-bundle.yaml --bundle support-bundle-2024-02-06T15_23_38.tar.gz --output json"}
2024-02-06T17:23:57.602+0200    V0      Analysis output generated       {"path": "bm-anywhere-cluster/generated/bootstrap-cluster-2024-02-06T17:23:57+02:00-analysis.yaml"}
2024-02-06T17:23:57.602+0200    V1      cleaning up temporary roles for diagnostic collectors
2024-02-06T17:23:57.602+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T17:23:57.602+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl delete -f - --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T17:23:58.151+0200    V5      Retry execution successful      {"retries": 1, "duration": "549.615569ms"}
2024-02-06T17:23:58.152+0200    V1      cleaning up temporary namespace  for diagnostic collectors      {"namespace": "eksa-diagnostics"}
2024-02-06T17:23:58.152+0200    V5      Retrier:        {"timeout": "2562047h47m16.854775807s", "backoffFactor": null}
2024-02-06T17:23:58.152+0200    V6      Executing command       {"cmd": "/usr/bin/docker exec -i eksa_1707229308714880618 kubectl delete namespace eksa-diagnostics --kubeconfig bm-anywhere-cluster/generated/bm-anywhere-cluster.kind.kubeconfig"}
2024-02-06T17:24:04.266+0200    V5      Retry execution successful      {"retries": 1, "duration": "6.114617963s"}
2024-02-06T17:24:04.266+0200    V0      collecting workload cluster diagnostics
2024-02-06T17:24:04.266+0200    V4      Task finished   {"task_name": "collect-cluster-diagnostics", "duration": "27.922365477s"}
2024-02-06T17:24:04.266+0200    V4      ----------------------------------
2024-02-06T17:24:04.266+0200    V4      Saving checkpoint       {"file": "bm-anywhere-cluster-checkpoint.yaml"}
2024-02-06T17:24:04.267+0200    V4      Tasks completed {"duration": "1h2m13.443118168s"}
2024-02-06T17:24:04.267+0200    V3      Cleaning up long running container      {"name": "eksa_1707229308714880618"}
2024-02-06T17:24:04.267+0200    V6      Executing command       {"cmd": "/usr/bin/docker rm -f -v eksa_1707229308714880618"}
Error: waiting for control plane to be ready: executing wait: executing wait: error: timed out waiting for the condition on clusters/bm-anywhere-cluster

$ docker logs boots
{"level":"info","ts":1707229362.0011525,"caller":"boots/main.go:119","msg":"starting","service":"github.com/tinkerbell/boots","pkg":"main","version":"8fd5c38"}
{"level":"info","ts":1707229362.0142574,"caller":"boots/main.go:186","msg":"serving iPXE binaries from local HTTP server","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>/ipxe/"}
{"level":"info","ts":1707229362.0142915,"caller":"boots/main.go:205","msg":"serving dhcp","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:67"}
{"level":"info","ts":1707229362.0143209,"caller":"boots/main.go:212","msg":"serving http","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:80"}
{"level":"info","ts":1707229362.0143735,"caller":"boots/main.go:128","msg":"serving syslog","service":"github.com/tinkerbell/boots","pkg":"main","addr":"<IP_ADDRESS>:514"}
{"level":"info","ts":1707229362.0145123,"logger":"github.com/tinkerbell/ipxedust","caller":"ipxedust@v0.0.0-20230118215055-b00d1b371ddf/ipxedust.go:194","msg":"serving iPXE binaries via TFTP","service":"github.com/tinkerbell/boots","addr":"<IP_ADDRESS>:69","timeout":5,"singlePortEnabled":true}
{"level":"info","ts":1707230370.9840763,"caller":"dhcp4-go@v0.0.0-20190402165401-39c137f31ad3/handler.go:105","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"recv","mac":"08:3a:88:5c:db:17","via":"<IP_ADDRESS>","iface":"eno2","xid":"\"3f:5a:29:fd\"","type":"DHCPREQUEST","secs":768,"option(81)":"AAAASVNSLVBGNFNNREdI"}
{"level":"info","ts":1707230370.9843452,"caller":"boots/dhcp.go:88","msg":"parsed option82/circuitid","service":"github.com/tinkerbell/boots","pkg":"main","mac":"08:3a:88:5c:db:17","circuitID":""}
{"level":"error","ts":1707230370.9847584,"caller":"boots/dhcp.go:101","msg":"retrieved job is empty","service":"github.com/tinkerbell/boots","pkg":"main","type":"DHCPREQUEST","mac":"08:3a:88:5c:db:17","error":"discover from dhcp message: no hardware found","errorVerbose":"no hardware found\ngithub.com/tinkerbell/boots/client/kubernetes.(*Finder).ByMAC\n\tgithub.com/tinkerbell/boots/client/kubernetes/hardware_finder.go:96\ngithub.com/tinkerbell/boots/job.(*Creator).CreateFromDHCP\n\tgithub.com/tinkerbell/boots/job/job.go:107\nmain.dhcpHandler.serve\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:99\nmain.dhcpHandler.ServeDHCP.func1\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:60\ngithub.com/gammazero/workerpool.(*WorkerPool).dispatch.func1\n\tgithub.com/gammazero/workerpool@v0.0.0-20200311205957-7b00833861c6/workerpool.go:169\nruntime.goexit\n\truntime/asm_amd64.s:1571\ndiscover from dhcp message"}
{"level":"info","ts":1707235000.6043785,"caller":"dhcp4-go@v0.0.0-20190402165401-39c137f31ad3/handler.go:105","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"recv","mac":"08:3a:88:61:ca:d4","via":"<IP_ADDRESS>","iface":"eno2","xid":"\"75:50:3e:7f\"","type":"DHCPREQUEST","option(81)":"AAAASVNSLVBGMlI2M1dR"}
{"level":"info","ts":1707235000.6046324,"caller":"boots/dhcp.go:88","msg":"parsed option82/circuitid","service":"github.com/tinkerbell/boots","pkg":"main","mac":"08:3a:88:61:ca:d4","circuitID":""}
{"level":"error","ts":1707235000.6049747,"caller":"boots/dhcp.go:101","msg":"retrieved job is empty","service":"github.com/tinkerbell/boots","pkg":"main","type":"DHCPREQUEST","mac":"08:3a:88:61:ca:d4","error":"discover from dhcp message: no hardware found","errorVerbose":"no hardware found\ngithub.com/tinkerbell/boots/client/kubernetes.(*Finder).ByMAC\n\tgithub.com/tinkerbell/boots/client/kubernetes/hardware_finder.go:96\ngithub.com/tinkerbell/boots/job.(*Creator).CreateFromDHCP\n\tgithub.com/tinkerbell/boots/job/job.go:107\nmain.dhcpHandler.serve\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:99\nmain.dhcpHandler.ServeDHCP.func1\n\tgithub.com/tinkerbell/boots/cmd/boots/dhcp.go:60\ngithub.com/gammazero/workerpool.(*WorkerPool).dispatch.func1\n\tgithub.com/gammazero/workerpool@v0.0.0-20200311205957-7b00833861c6/workerpool.go:169\nruntime.goexit\n\truntime/asm_amd64.s:1571\ndiscover from dhcp message"}

$ docker logs bm-anywhere-cluster-eks-a-cluster-control-plane
INFO: ensuring we can execute mount/umount even with userns-remap
INFO: remounting /sys read-only
INFO: making mounts shared
INFO: detected cgroup v1
WARN: cgroupns not enabled! Please use cgroup v2, or cgroup v1 with cgroupns enabled.
INFO: fixing cgroup mounts for all subsystems
INFO: removing misc controller
INFO: clearing and regenerating /etc/machine-id
Initializing machine ID from random generator.
INFO: faking /sys/class/dmi/id/product_name to be "kind"
INFO: faking /sys/class/dmi/id/product_uuid to be random
INFO: faking /sys/devices/virtual/dmi/id/product_uuid as well
INFO: setting iptables to detected mode: legacy
INFO: detected IPv4 address: <IP_ADDRESS>
INFO: detected IPv6 address: fc00:f853:ccd:e793::2
INFO: starting init
systemd 252.16-1.amzn2023.0.1 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ -ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
Detected virtualization docker.
Detected architecture x86-64.

Welcome to Amazon Linux 2023!

Failed to open libbpf, cgroup BPF features disabled: Operation not supported
Queued start job for default target graphical.target.
[  OK  ] Created slice kubelet.slic… used to run Kubernetes / Kubelet.
[  OK  ] Created slice system-modpr…lice - Slice /system/modprobe.
[  OK  ] Created slice user.slice - User and Session Slice.
[  OK  ] Started systemd-ask-passwo…quests to Console Directory Watch.
[  OK  ] Started systemd-ask-passwo… Requests to Wall Directory Watch.
[  OK  ] Reached target local-fs.target - Local File Systems.
[  OK  ] Reached target network-online.target - Network is Online.
[  OK  ] Reached target paths.target - Path Units.
[  OK  ] Reached target slices.target - Slice Units.
[  OK  ] Reached target swap.target - Swaps.
[  OK  ] Listening on systemd-initc… initctl Compatibility Named Pipe.
[  OK  ] Listening on systemd-journ…socket - Journal Audit Socket.
[  OK  ] Listening on systemd-journ…t - Journal Socket (/dev/log).
[  OK  ] Listening on systemd-journald.socket - Journal Socket.
[  OK  ] Listening on systemd-userd…0m - User Database Manager Socket.
         Mounting dev-hugepages.mount - Huge Pages File System...
         Mounting sys-kernel-debug.… - Kernel Debug File System...
         Mounting sys-kernel-tracin… - Kernel Trace File System...
         Starting ldconfig.service - Rebuild Dynamic Linker Cache...
         Starting modprobe@configfs…m - Load Kernel Module configfs...
         Starting<EMAIL_ADDRESS>- Load Kernel Module drm...
         Starting<EMAIL_ADDRESS>- Load Kernel Module fuse...
         Starting nfs-convert.servi…ss NFS configuration convertion...
         Starting systemd-journald.service - Journal Service...
         Starting systemd-network-g… units from Kernel command line...
         Starting systemd-sysusers.…rvice - Create System Users...
[  OK  ] Mounted dev-hugepages.mount - Huge Pages File System.
[  OK  ] Mounted sys-kernel-debug.m…nt - Kernel Debug File System.
[  OK  ] Mounted sys-kernel-tracing…nt - Kernel Trace File System.
[  OK  ] Finished ldconfig.service - Rebuild Dynamic Linker Cache.
<EMAIL_ADDRESS>Deactivated successfully.
[  OK  ] Finished modprobe@configfs…[0m - Load Kernel Module configfs.
<EMAIL_ADDRESS>Deactivated successfully.
[  OK  ] Finished<EMAIL_ADDRESS>- Load Kernel Module drm.
<EMAIL_ADDRESS>Deactivated successfully.
[  OK  ] Finished<EMAIL_ADDRESS>- Load Kernel Module fuse.
nfs-convert.service: Deactivated successfully.
[  OK  ] Finished nfs-convert.servi…cess NFS configuration convertion.
[  OK  ] Finished systemd-network-g…rk units from Kernel command line.
[  OK  ] Reached target network-pre…get - Preparation for Network.
         Mounting sys-fs-fuse-conne… - FUSE Control File System...
         Mounting sys-kernel-config…ernel Configuration File System...
         Starting rpc-statd-notify.…- Notify NFS peers of a restart...
[  OK  ] Started systemd-journald.service - Journal Service.
[FAILED] Failed to start systemd-sy…service - Create System Users.
See 'systemctl status systemd-sysusers.service' for details.
[  OK  ] Mounted sys-fs-fuse-connec…nt - FUSE Control File System.
[  OK  ] Mounted sys-kernel-config.… Kernel Configuration File System.
[  OK  ] Started rpc-statd-notify.s…m - Notify NFS peers of a restart.
         Starting systemd-journal-f…h Journal to Persistent Storage...
[  OK  ] Finished systemd-journal-f…ush Journal to Persistent Storage.
         Starting systemd-tmpfiles-… Volatile Files and Directories...
[  OK  ] Finished systemd-tmpfiles-…te Volatile Files and Directories.
         Starting systemd-journal-c…e - Rebuild Journal Catalog...
         Starting systemd-update-ut…rd System Boot/Shutdown in UTMP...
[  OK  ] Finished systemd-update-ut…cord System Boot/Shutdown in UTMP.
[  OK  ] Finished systemd-journal-c…ice - Rebuild Journal Catalog.
         Starting systemd-update-do…rvice - Update is Completed...
[  OK  ] Finished systemd-update-do…service - Update is Completed.
[  OK  ] Reached target sysinit.target - System Initialization.
[  OK  ] Started systemd-tmpfiles-c… Cleanup of Temporary Directories.
[  OK  ] Reached target timers.target - Timer Units.
[  OK  ] Listening on dbus.socket- D-Bus System Message Bus Socket.
[  OK  ] Reached target sockets.target - Socket Units.
[  OK  ] Reached target basic.target - Basic System.
         Starting gssproxy.service - GSSAPI Proxy Daemon...
         Starting systemd-logind.se…ice - User Login Management...
         Starting undo-mount-hacks.…ice - Undo KIND mount hacks...
[  OK  ] Started gssproxy.service - GSSAPI Proxy Daemon.
[  OK  ] Finished undo-mount-hacks.…rvice - Undo KIND mount hacks.
         Starting containerd.servic… - containerd container runtime...
[  OK  ] Started containerd.service…0m - containerd container runtime.
         Starting dbus-broker.servi… - D-Bus System Message Bus...
[  OK  ] Started dbus-broker.service - D-Bus System Message Bus.
[  OK  ] Started systemd-logind.service - User Login Management.
         Mounting var-lib-nfs-rpc_p…ount - RPC Pipe File System...
[  OK  ] Mounted var-lib-nfs-rpc_pi….mount - RPC Pipe File System.
[  OK  ] Reached target rpc_pipefs.target.
[  OK  ] Reached target nfs-client.target - NFS client services.
[  OK  ] Reached target remote-fs-p…eparation for Remote File Systems.
[  OK  ] Reached target remote-fs.target - Remote File Systems.
         Starting systemd-user-sess…vice - Permit User Sessions...
[  OK  ] Finished systemd-user-sess…ervice - Permit User Sessions.
[  OK  ] Started console-getty.service - Console Getty.
[  OK  ] Reached target getty.target - Login Prompts.
[  OK  ] Reached target multi-user.target - Multi-User System.
[  OK  ] Reached target graphical.target - Graphical Interface.
         Starting systemd-update-ut… Record Runlevel Change in UTMP...
[  OK  ] Finished systemd-update-ut… - Record Runlevel Change in UTMP.

Amazon Linux 2023
Kernel 5.15.0-92-generic on an x86_64 (-)

We are also wondering how the admin machine connects to the worker and control-plane and reset it to bottlerocket?
Is it with the SSH (we already configured the private key on the admin server and the certificates on the worker and the control plane)
Anything that you know or suggest can help :)
Thank you!

Hi @afikmirc
Creating workload cluster step has timed out.
2024-02-06T16:23:35.853+0200 V0 Creating new workload cluster
2024-02-06T17:23:36.344+0200 V9 docker {"stderr": "error: timed out waiting for the condition on clusters/bm-anywhere-cluster\n"}

Does your Boots log have your expected MAC address?
If no, you have following problem

Bootstrap cluster does not have L2 layer connectivity with workload machine
The workload machine is not PXE boot

I share my boots logs for your reference.
My expected MAC address (ec:2a:72:46:2e:c4) is included in the boots log.
In the Creating workload cluster step, the Admin machine and Control plane are connected via PXE boot (DHCP, HTTP).
And the existing OS is deleted and new OS will install.
According to your boots log, the procedure stops at 5.
0207boots.txt

Hi @terry-hasegawa , thank you for the response.
Does your Boots log have your expected MAC address? - No, the 2 MACS (worker and control-plane) that in the hardware.csv file are missing.
We do use layer 2 connectivity between the admin machine, worker and control plane machines.
We enabled PXE in the 3 machines.
We're don't have BMC.
PXE configuration:

Should we reset the machines manually (worker and control-plane) during the cluster creation?
Thanks

Hi @afikmirc ,
Does the workload machine run PXE boot? PXE boot procedure starts with the workload machine sending DHCP Discover.
If it is not sending, then the problem is on the workload machine side.
After that boots will receive DHCP Discover , record and reply.

Hi @terry-hasegawa ,
All the machines (including the worker) have the BIOS configuration that I posted in the previous comment (PXE boot enabled in the BIOS), this is all we configured for the PXE boot.
Could you please mention what everything else is required to have the PXE boot? any suggestion can help.
Thanks!

Hi @afikmirc ,
I use Dell server. For Dell servers, to boot with PXE boot, enable PXE boot in NIC config, then enable PXE boot in Boot option.
Do you have access to the console screen of the server?  possibly you can check PXE booting status on the console screen.

Hi @terry-hasegawa, were using 3 Dell laptops for the deployment (Dell Latitude laptops) with Ubuntu 20.04 installed.
Is there anything I can do to check the PXE from the OS inside/BIOS?
Unfortunately, we do have only laptops for the lab and no physical servers are available for it, but for our understanding, every PC or laptop is supported in EKS Anywhere.
What do you think?
Thanks!

Hi @afikmirc ,
We can see the PXE settings in the BIOS config and the status on the laptop screen.
I found the PXE boot view for XPS on youtube.
https://www.youtube.com/watch?v=FrFlLTDHKsM&t=105s
I will check PXE boot using my Latitude 7520 with USB-Ether adaptor.
Did you check these articles? You need to change some BIOS configs and select PXE boot with the F12 key.
BIOS Settings to Allow PXE Boot on Dell Latitude Laptops
https://www.dell.com/support/kbdoc/en-us/000131551/bios-settings-to-allow-pxe-boot-on-newer-model-dell-latitude-laptops
Cannot PXE Boot to a Dell Type-C to Ethernet Dongle
https://www.dell.com/support/kbdoc/en-us/000148936/cannot-pxe-boot-to-a-dell-type-c-to-ethernet-dongle
Ethernet Connectivity lost during PXE booting using a USB Type-C to Ethernet adapter
https://www.dell.com/support/kbdoc/en-us/000144650/ethernet-connectivity-lost-during-pxe-booting-using-a-usb-type-c-to-ethernet-adapter


add this really basic generate_filename method to filer.utils

this works for me: https://gist.github.com/benzkji/5f14fef05021f325c7ef
is there anything speaking against using filer like this? I prefer a clean url, and the randomized approch looks ok for always keeping the original filename, but the url is impossible to remember, and for example type manually, or send in a e-mail. the only drawback I know, is that the storage enginge itself adds a filename_5charshash.ext when there is a file with the same name already existing.
if this looks ok, could we add no_subfolders to filer.utils.generate_filename.py?

Filer is capable of handling such file naming conflicts and it's entirely possible to add this to core.
It will need docs and tests before merging, though

any hints where the current utils.generate_filename.py methods are tested, so I have any guidance how to implement those tests?

@yakky or, asked differently, what do you expect to test? I dont see any tests for the current generate_filename methods? A small hint in the docs ( http://django-filer.readthedocs.io/en/latest/settings.html#filer-storages ) of the available options (by_data, randomized, no_subfolders or flat) would be good though.

@jrief what are your thoughts about these?

#543


Migrate LinearAlgebra kata to quantum.microsoft.com

Current LinearAlgebra tutorial is implemented in Python, so it can be used without setting up classic QDK. But it would be nice to have it available as part of the new katas experience.
Steps:

[ ] The tasks and the testing harnesses need to be migrated from Python to Q#.
Array manipulation not as elegant in Q# as it is in Python, especially for arrays of arrays we'd need for this kata. Instead of migrating the tasks precisely, we can modify them to avoid the need to work with mutable arrays (that is, to update separate array elements). We can do this by simplifying the tasks: instead of asking to write the code to solve a general case of a task (such as multiplying two arbitrary matrices), asking to solve a specific hardcoded case (multiplying two given matrices of small dimensions). In this case, Q# code would just have to return a constant array, which is a lot easier to implement.
[ ] Look into switching some of the tasks to real-valued matrices instead of complex.
For the tasks 1-5, we can definitely do that (especially matrix inverse would be easier to calculate for real numbers), the rest require complex numbers (or are more natural/not overwhelming to do with complex numbers).
[ ] Tasks 13-14 can use a complex eigenvalue instead of a real one, to emphasize that eigenvalues of unitaries can be complex.
[ ] We'll need to remove Python explanations from the workbook (just keep the math), and instead add some useful links for working with matrices, especially for eigenvalue/eigenvector analysis, to equip our learners with tools to do this automatically in the future.

After some deliberation, I think it makes sense to keep tasks 13-14 (eigenvalues and eigenvectors) out of Linear Algebla and move them to much later in the learning path, to the future PhaseEstimation kata. They don't show up anywhere earlier than that (There is one task in DistinguishUnitaries that uses them, but in the context of phase estimation, not on their own). I doubt anybody who's just getting started with quantum wants to learn about them before getting their hands on the first fun quantum stuff!


Better syntax example...

The syntax issue in this code example doesnt work within the way it is presented to the pupil. I had to manipulate the syntax in order for the code to be accepted fortunately I have prior knowledge in Java and python to manipulate the parentheses but to someone starting to code this would take a very long time to come to an understanding of how and where to put the parentheses.

Challenge Name

Issue Description

Browser Information

Browser Name, Version:
Operating System:
Mobile, Desktop, or Tablet:

Your Code

Screenshot

The syntax issue in this code example doesnt work within the way it is presented to the pupil.

@Absailnit which code sample? Which challenge are we talking about?
P.S: Follow Help I have found a bug while reporting issues.

The tutorial "Introducing Else If Statements.. example doesnt include the closing brackets to the function statements.. Those unfamiliar with syntax and how to close these statements are going to be experiencing some hinderance on this tutorial. The next few examples dealing with else if tutorials include these to close.  I have included my screenshot so that you can see from the example to the code the missing closing bracket in the example.![image](https://cloud.githubusercontent.com/assets/19542340/16846856/10e0763c-49bc-11e6-973f-e81fff72c770.png)

@Absailnit the example code given is correct JavaScript. It doesn't need any closing brackets, unless you write a complete function, which it is not intended to be in this case.
Functions were introduced in Write Reusable JavaScript Functions, which was about 20 challenges before the "Introducing Else If Statements." So writing functions at this point in the curriculum (unless the learner jumped around) should not be too difficult.
The editor is set up to check for these missing brackets so even if a learner doesn't catch them, the editor will show errors.

Eric Thank you for your candid response! Must have neglected to pay
attention to those brackets... 20 lessons ago with the gobs of codes. I
will Google from here out.
On Jul 14, 2016 1:28 PM, "Eric Leung"<EMAIL_ADDRESS>wrote:

@Absailnit https://github.com/Absailnit the example code given is
correct JavaScript. It doesn't need any closing brackets, unless you write
a complete function, which it is not intended to be in this case.
Functions were introduced in Write Reusable JavaScript Functions
https://www.freecodecamp.com/challenges/write-reusable-javascript-with-functions,
which was about 20 challenges before the "Introducing Else If Statements."
So writing functions at this point in the curriculum (unless the learner
jumped around) should not be too difficult.
The editor is set up to check for these missing brackets so even if a
learner doesn't catch them, the editor will show errors.
[image: image]
https://cloud.githubusercontent.com/assets/2754821/16848947/0d68c964-49ad-11e6-9cc5-bd31992fd25b.png
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/FreeCodeCamp/FreeCodeCamp/issues/9723#issuecomment-232733797,
or mute the thread
https://github.com/notifications/unsubscribe/ASoxRA8Zh1MgMt_cqcBRq4haRo5Rke3Gks5qVnGzgaJpZM4JMeqN
.

Closing, as resolved.
Thanks @Absailnit and happy coding!


Unable to build with current vitasdk - SDL_mixer_ext.h

Love the port! I was planning on experimenting with streamlining the UI a bit, but I can't get it to build. I can patch up the CMakeLists.txt a bit to let CMake finish, but the code still refers to SDL_mixer_ext.h:
In file included from SpaceCadetPinball/high_score.cpp:1:
SpaceCadetPinball/pch.h:34:10: fatal error: SDL_mixer_ext.h: No such file or directory
   34 | #include <SDL_mixer_ext.h>
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.

I can't seem to find that in vitasdk - did you build this separately or was it part of the SDK prior?

I can't get it to go through with cmake, no matter what I do.  this is what happens:

not to mention your own issue.  lol


Any way to define public assets on this setup ?

Bug summary
Tried koa as well next.js tuts, cannot seem to setup public path to serve my assets.
Tried naming folders as:

static

public

But no luck so far !

Hi @ranjitatwal30!
Here's some links to help you out:
https://github.com/zeit/next.js/tree/master#static-file-serving-eg-images
The next.js forums can be helpful too:
https://spectrum.chat/next-js?tab=posts
As this is not a bug related to our tutorial content I'm going to close this issue.

Well, figured it out. I created "static" folder which is served as "/static".
Note: for some reason "public" served  as "/" did not work for me


CollectionFieldType with mandatory = true always tells me there are empty fields

I defined as part of a content type a CollectionFieldType. I want to have at least one element in that collection, so I set the Restriction as Mandatory = true. In that CollectionFieldType, all the underlying fields (a bunch of text fields) also have 'mandatory=true'.
When I am filling information in the content type, I permanently get the following errors :

A workaround is to define the CollectionFieldType as not mandatory. I need this collection to be present and contain data though, so it's not a long term solution.

This is in v1.3.13

So the mandatory constraint has been removed for the collection field in commit User/Repository@SHA: ems-project/EMSCoreBundle@c69200e04cfe68912e97437875683a15286ea207.
An issue to add a min and max constraint to the collection field has been created ems-project/EMSCoreBundle#2

See project/EMSCoreBundle#2


Fix(messaging): dm channel create

There is no members field in request form, so the used value
was nil => only the creator is a member.

This is a fix of auto-generated file.