add support to set UiAutomator Congfigurator values

This is a sub PR for appium/appium#6561

couple comments, then again a test would be nice!

OK, I've had more time to grok what you are trying to do here, and I'd like to suggest a change in the approach.
Currently, you're asking the client to do something like:
POST /wd/hub/session/<sessionId/appium/settings

with a request body of:
{"settings": {"configurator": "{\"setKeyIntervalDelay\": 1000}"}}

In other words, you're creating a "configurator" group of settings that have their own internal API. Instead what I'd like to see is simply all the configurator options as top-level settings. So the client request body would look like:
{"settings": {"keyIntervalDelay": 1000}}

(Notice also no need to put set in keyIntervalDelay)
Then you'll need to change the way the code here works. Instead of:
if (key === "configurator") {
  await this.setConfiguratorConfig(value);
}

You'd have:
if (key === "keyIntervalDelay") {
  await this.setConfiguratorConfig({"setKeyIntervalDelay": value});
}

And so on with all the configurator config options you want to expose to the clients via this settings API.
(And you'd no longer need to JSON.parse in setConfiguratorConfig)
Does all this make sense? I think this is a great addition to the driver, thanks!

ok, I am now on vacation until next Monday. Will get on it after vocation. Thanks for the advice:)
Concerning about the test, maybe we should create more methods to implement getting these configurations from Configurator? So tests could be done by setting firstly and then verifying via getting
Sent from my mobile device.

在 2016年6月8日，22:12，Jonathan Lipps<EMAIL_ADDRESS>写道：
OK, I've had more time to grok what you are trying to do here, and I'd like to suggest a change in the approach.
Currently, you're asking the client to do something like:
POST /wd/hub/session/<sessionId/appium/settings
with a request body of:
{"settings": {"configurator": "{"setKeyIntervalDelay": 1000}"}}
In other words, you're creating a "configurator" group of settings that have their own internal API. Instead what I'd like to see is simply all the configurator options as top-level settings. So the client request body would look like:
{"settings": {"keyIntervalDelay": 1000}}
(Notice also no need to put set in keyIntervalDelay)
Then you'll need to change the way the code here works. Instead of:
if (key === "configurator") {
await this.setConfiguratorConfig(value);
}
You'd have:
if (key === "keyIntervalDelay") {
await this.setConfiguratorConfig({"setKeyIntervalDelay": value});
}
And so on with all the configurator config options you want to expose to the clients via this settings API.
(And you'd no longer need to JSON.parse in setConfiguratorConfig)
Does all this make sense? I think this is a great addition to the driver, thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@jlipps Sorry for the late reply. I tried to refactor as per your last comment using top level setting for all Configurator related configurations, it seems not making it less complex:

first change onSettingsUpdate as you said:

  async onSettingsUpdate (key, value) {
    if (key === "ignoreUnimportantViews") {
      await this.setCompressedLayoutHierarchy(value);
    }
    else if (key === "waitForIdleTimeout") {
      await this.setConfiguratorConfig({"waitForIdleTimeout": value});
    }
    else if (key === "waitForSelectorTimeout") {
      await this.setConfiguratorConfig({"waitForSelectorTimeout": value});
    }
    else if (key === "keyInjectionDelay") {
      await this.setConfiguratorConfig({"keyInjectionDelay": value});
    }
    else if (key === "actionAcknowledgmentTimeout") {
      await this.setConfiguratorConfig({"actionAcknowledgmentTimeout": value});
    }
    else if (key === "scrollAcknowledgmentTimeout") {
      await this.setConfiguratorConfig({"scrollAcknowledgmentTimeout": value});
    }
  }

change setConfiguratorConfig like below:

      // Set UiAutomator Configurator related configurations
      // value sould be like {"waitForIdleTimeout":5000}
      async setConfiguratorConfig (value) {
        for (k in value) { // maybe need to check value object is a dictionary?
          await this.bootstrap.sendAction(k, value);
        }
      }

Then change appium-android-bootstrap to handle all these settings

    map.put("waitForIdleTimeout", new ConfiguratorHandler());
    map.put("waitForSelectorTimeout", new ConfiguratorHandler());
    map.put("keyInjectionDelay", new ConfiguratorHandler());
    map.put("actionAcknowledgmentTimeout", new ConfiguratorHandler());
    map.put("scrollAcknowledgmentTimeout", new ConfiguratorHandler());

Is that all you expected?

Hi @truebit the point wasn't necessarily to make the code less complex, it was to make it more compatible and user-friendly. But some improvements I could make to your examples:
  async onSettingsUpdate (key, value) {
    if (key === "ignoreUnimportantViews") {
      await this.setCompressedLayoutHierarchy(value);
    } else {
      await this.setConfiguratorConfig({key, value});
    }
  }

and
  // Set UiAutomator Configurator related configurations
  // value sould be like {"waitForIdleTimeout":5000}
  async setConfiguratorConfig (config) {
    await this.bootstrap.sendAction(config.key, config.value);
  }

but yeah, this is generally the right idea!

I am totally newbie of javascript.
I think you mean await this.setConfiguratorConfig({key__:__ value});( notice the colon
and
for key-value object, it cannot be invoked by its key value with .key or .value. I find two ways, one is to use for...in, one is using something like Object.keys(config)[0] to get key and config[key] to get value

but the second param of this.bootstrap.sendAction must be a key-value object

Concerning about the tests, after update settings, how should we get the real Configurator result to verify it?

Concerning about the tests, after update settings, how should we get the real Configurator result to verify it?

How would you verify that it is working as a user?

How would you verify that it is working as a user?

IMO this could hardly verify from a user's perspective in code. I think verify by using Configurator's get method.
Does appium settings api has method to handlingGET method? like onSettingsUpdate being done in POST method? If so, we could override that method to get Congurator values to do the verification.

Yeah that's the trick, it doesn't have such a method. Hmm. I suppose you could expose one from the bootstrap just for testing...

Where are we on this PR?

@imurchie
to create another method internally to get the Configurator values to  verify this method is too complex and there is no API in appium to support passing this value through.
Recently I found that uiObject.click() would wait for Configurator.getwaitForSelectorTimeout() timeout to find an element. But I do not know how to trigger that in Appium.

@truebit what about putting a value on the result of the GET /session/:id call?

@truebit what do you think about that idea?

@jlipps not sure if you are the right person to ping but can it be related to  https://stackoverflow.com/questions/49628336/appium-android-set-custom-timeout-between-click-tap


To Check if a sentence is Pangram

Given a sentence consisting of only lowercase characters, return true if sentence is pangram otherwise false. (Leetcode Problem)
Constraints-
1)1 <= sentence.length <= 1000
2)sentence consists of lowercase English letters.
I would like to build a solution for this problem in Java language.
@smv1999 Pls assign this issue to me.

Sure @mrunmayee9601, you can go ahead !


[Bug] Error: -cp requires class path specification

Describe the bug
Whenever I try to use Joern to parse C code on Windows, I encounter errors: -cp requires class path specification
Is this a bug?
To Reproduce
joern-parse.bat ./x42/c
Parsing code at: ./x42/c - language: `NEWC`
[+] Running language frontend
=======================================================================================================
Invoking CPG generator in a separate process. Note that the new process will consume additional memory.
If you are importing a large codebase (and/or running into memory issues), please try the following:
1) exit joern
2) invoke the frontend: D:\document\test\joern\joern-cli\c2cpg.bat -J-Xmx8152m ./x42/c --output cpg.bin
3) start joern, import the cpg: `importCpg("path/to/cpg")`
=======================================================================================================

Error: -cp requires class path specification
Failure: Could not generate CPG with language = NEWC and input = ./x42/c

Desktop (please complete the following information):

OS: Windows 10
Joern Version : v1.1.1482
Java version: java version "16.0.1" 2021-04-20

Additional context
Add any other context about the problem here.

Just tested that with the latest joern and it worked without any errors here on my Windows machine.
Can you try a clean joern install?

I'm downloading the latest version of joern-cli from https://github.com/joernio/joern/releases/download/v1.1.1482/joern-cli.zip, decompressing it and running joern-parse.bat.
Does it require additional installation?

Did you execute joern-parse.bat in the PowerShell?

yes, Is it only run on cygwin or mingw?

For me it works in the PowerShell.

it's ok on java 11.

@mpollmeier is this something for you?

Hmm, not sure I can really help here, I don't have a working windows setup to reproduce this.
Searching for your error there's a few pages that hint that you may need to fix your env variables, e.g.
https://9to5answer.com/error-classpath-requires-class-path-specification
Did you try that yet?


WebRTC: ICE failed, add a TURN server and see about:webrtc for more details

Hi,
I've got that error while trying to start stream. I'm on my local network, using Firefox or Safari desktop.
On IOS companion app still on local network i sometimes got connected staus but no video is loading and after few secondes i lost connexion and got stucked in an new trying to start stream step.
Any idea ? Can ICE/TURN be disabled if usage is only on local network ?

Have you read FAQ?

Yes I did, but not sure to understand everythings. I've made forwarding ports, Bunny sample work like a charme.
Maybe my issue is on the docker part, i'm using HA Supervised distribution but i have no idea on how to allow more port forwarding on supervisor...

I don't have that issue with https://github.com/olijouve/webrtc-streamer-card but i would prefer to use your integration.

Bunny works in Firefox, Safari and iOS?

I just restarted HA and now it worked on firefox, IOS...
I restart also earlier but maybe there where something wrong with google stun server.
I don't have sound, is it supposed to work also or only video at the moment ?
Great integration and card, many thanks !


Implement create_kg_node_extractor

The create_kg_node extractor is a data extractor that creates a new CDR document to hold a segment that is passed to it as an input. The function returns the ID of this new CDR document and this ID is used as the value that appears in the field for this extractor.
Inputs:

segment_name: the name of the segment where the user wants to put the value that results from the JSON path input path. The segment will appear in content_extraction
doc_id: the desired doc_id for the newly created CDR object. doc_id is optional, if not provided, one should be made up and returned. If one is passed in, it is also returned.
parent_doc_id: the doc-id of the parent, it should be added to the KG of the new object as parent_doc_id so that the child points to the parent who created it.

Result:

the doc_id of the nested KG object, either newly created, or the one that was passed in.
the newly created CDR object is added to the current CDR object in a special attribute, eg, nested_docs. Once processing of a CDR object completes, the nested_docs may have a list of new documents that must be processed. The caller will decide how to process these documents: it can iterate over them, or it can add them to the appropriate kafka topic.

Closing, as the first version is complete. Will open new issues for the fixes/enhancements.


Issue on Debian Jessie Qt5.5.1 using make

I did all the steps and open the viewer-qml example on qt creator.
As i buil it i get this error message:
No such file or directory
#include "main.moc"
Any idea?


Implement felt array and multiple outputs support in contract class generator from ABI

Closes #78
felt* are mapped by a List<Felt>

Add support for mutiple outputs in contract class generator from ABI.
Closes #88

Close #80


Stop using relative cd to paths in travis.yml

@oconnor663 @chrisnojima fixes broken master build

:mag_right: No visual changes found as a result of these commits.

This looks good. Would it also be safer to put all of our cds in parens?

Ok we tried that and it was surprisingly ugly :p

I'd say if we have yet another cd bug we can come back to this and consider re-paren-ifying the whole thing. Until then, :+1:


Cron resource symbols for weekday are broken (regression)

I tried to create a cron job:
cron 'clean_db_archive_logs' do
  minute '0'
  hour '6'
  weekday :tuesday
  user 'postgres'
  command '/var/lib/postgresql/backup.py'
end

and knife'd it up to our chef server. I ran chef-client and the run failed with the following error:
================================================================================
Error executing action `create` on resource 'cron[clean_db_archive_logs]'
================================================================================

Chef::Exceptions::Cron
----------------------
Error updating state of clean_db_archive_logs, exit: 1

Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/<cb>/recipes/<recipe>

 42: cron 'clean_db_archive_logs' do
 43:   minute '0'
 44:   hour '6'
 45:   weekday :tuesday
 46:   user 'postgres'
 [..]
 49:   command '/var/lib/postgresql/backup.py'
 50: end

Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/<cb>/recipes/<recipe>:42:in `from_file'

cron("clean_db_archive_logs") do
  action :create
  retries 0
  retry_delay 2
  default_guard_interpreter :default
  minute "0"
  hour "6"
  day "*"
  month "*"
  weekday :tuesday
  command "/var/lib/postgresql/backup.py"
  user "postgres"
  [...]
  declared_type :cron
  cookbook_name "<cb>"
  recipe_name "<recipe>"
end

I then changed weekday :tuesday to weekday '2', re-knife'd and re-ran chef-client (ver 12.0.3), which succeeded. It appears that the cron resource doesn't like mixed input for the times that a cron job will run.

@Vasu1105 Let's make sure that this issue is resolved in both the cron and cron_d resources.

Sure @tas50 we will take care of it. Currently Antima from MSys is working on this. So I was trying to assign her this issue but I can't see her in our Assignees list. And it mistakenly got assigned to me. Informed this to @btm. And we will definitely will take care of cron_d too. Thank you.

@Vasu1105 You should probably take a look at the cron_d weekday property. It does validation using a native property instead of a crazy set_or_return mess like cron. You'd have to coerce the symbols to strings and then the validation should do the rest. It was something I meant to do for chef 16, but never got around to do doing it.


MB-11603 : Remove as many fmt.Print* statements as possible

MB-11603
Summary
We should be using the logging package where appropriate.
It might (in the future) be worth adding a pre-commit check to prevent fmt.Print, so I changed some semi-valid uses of that to use logging instead.

Messages

:book:
:link: MB-11603

  Generated by :no_entry_sign: dangerJS against 9ff41b71a1a93e47c92ed559c065fcbfa868bedb

Yeah, I saw those, too, but punted for now to keep the perfect from being the enemy of the good


FAS-44 routing

Abstract routing from app entrypoint to separate module
Update routes to use PK id
Pluralize entries URI

Build: http://localhost:6006/job/FAPI/job/PR-17/1/ finished with status SUCCESS


Update to grobid 0.7.3

This PR mainly update the support to grobid 0.7.3, and includes:

update to grobid 0.7.3 (including supporting JDK > 11) recommended is JDK 17
update to JUnit 5
update docker build to use the gradle distribution instead of the fat JAR
automate release to build the docker image

Merged!


helm chart installation error

Hello,
I try to install vernemq via helm charts on my ovhcloud managed kubernetes service (1.22.2-2) but i have the following error
sdavid@ubv8-r2d2:~$ helm install vernemq/vernemq --generate-name
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/sdavid/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/sdavid/.kube/config
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(StatefulSet.spec.template.spec.containers[0].envFrom): invalid type for io.k8s.api.core.v1.Container.envFrom: got "map", expected "array"
What i'm doing wrong ?
Thank you

You're not doing anything wrong – the chart is broken. The problem has been fixed since but no update has been released.

The workaround for that particular problem is to define envFrom: [] under vernemq.

I'm new to kubernetes and helm, my problem is failed to download vernemq charts on my MacOS like pic below :

Is that the same problem you mentioned upon "the chart is broken" ?   @agronholm Thank you.

Is that the same problem you mentioned upon "the chart is broken" ? @agronholm Thank you.

No. You don't have the vernemq repository added.

Any update on the fix for helm chart?

How do you add the vernemq repository? there's no explanation in the documentation?

How do you add the vernemq repository? there's no explanation in the documentation?

It's right at the start, here.

@maelp
helm repo add vernemq https://vernemq.github.io/docker-vernemq
helm search repo -l vernemq
Does this help?

Thanks :) would be perhaps useful to add this to the README ;)

Thanks :) would be perhaps useful to add this to the README ;)

Huh? I literally just pointed out where it is in the README!

@agronholm @maelp Thanks for helping out! I need more coffee too :)

Thanks @agronholm @ioolkos
When installing the latest Helm chart on GKE Autopilot, I have a CrashLoopBackoff of the pod, I tried using envFrom: [] (but it seems to be the default in values.yaml now anyway) and it doesn't seem to change anything
Do you know if the latest version (1.8.1) is working, or should we downgrade the version?
    error: update failed

  kubernetes:apps/v1:StatefulSet (vernemq/vernemq):
    error: 3 errors occurred:
    	* the Kubernetes API server reported that "vernemq/vernemq" failed to fully initialize or become live: 'vernemq' timed out waiting to be Ready
    	* 0 out of 1 replicas succeeded readiness checks
    	* [Pod vernemq/vernemq-0]: containers with unready status: [vernemq] -- [CrashLoopBackOff] back-off 5m0s restarting failed container=vernemq pod=vernemq-0_vernemq(e9c48636-2cc6-4364-8432-0869f1af9bec)

This is how I install the chart (using Pulumi)
chart_ns = Namespace("vernemq", metadata=ObjectMetaArgs(name="vernemq"))
chart = Chart(
    "vernemq",
    config=ChartOpts(
        fetch_opts={"repo": "https://vernemq.github.io/docker-vernemq"},
        chart="vernemq",
        version="1.8.1",
        namespace=chart_ns.metadata.name,
        values={
            "envFrom": []  # To fix installation issue https://github.com/vernemq/docker-vernemq/issues/300
        },
    ),
    opts=pulumi.ResourceOptions(provider=k8s_provider, depends_on=[chart_ns]),
)

(for the README, I was speaking about the one in the Helm chart dir, which does not mention the repo https://github.com/vernemq/docker-vernemq/blob/master/helm/vernemq/README.md)

@maelp can't really help on GKE Autopilot and Pulumi. Is there a way to get to more logs?

Okay seems that now it works, perhaps I had forgotten to set DOCKER_VERNEMQ_ACCEPT_EULA


lightbox box not showing up

When using plugin Featherbox to enable lightbox functionality it works only in original Antimatter theme. In Antimatter Open Publishing it opens a new page instead of a box.

Hi @rafalzdeb , is it possible for you to share an example page with images for me to take a look into this (either here or in the Grav Slack room)?
BTW, I am close to releasing an Open Publishing Space version of the Quark theme - pre-release is at https://github.com/hibbitts-design/grav-theme-quark-open-publishing I wonder if Lightbox works with that as-is?

Hello Paul,
This is a source from the page in question. Clicking on a picture with
lightbox enabled in markdown get me to the picture page. Tested on Chrome
and Firefox on mac and windows.
Cheers

Adding multiple photos | Slow Adv

Adding multiple photos

Slow Adv

Blog

Where am I?

Modular Page

Read Me

Setup Git Sync

Blog

Adding multiple photos

22
Mar

 Adding multiple photos

Poland
Autumn

Previous Post

Built with Grav CMS
Open
Publishing Space package by
hibbittsdesign.org

Blog

Where am I?

Modular Page

Read Me

Setup Git Sync

------------------------------
2018-03-27 23:06 GMT+02:00 Paul Hibbitts<EMAIL_ADDRESS>
Hi @rafalzdeb https://github.com/rafalzdeb , is it possible for you to
share an example page with images for me to take a look into this (either
here or in the Grav Slack room)?
BTW, I am close to releasing an Open Publishing Space version of the Quark
theme - pre-release is at https://github.com/hibbitts-
design/grav-theme-quark-open-publishing I wonder if Lightbox works with
that as-is?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/hibbitts-design/grav-theme-antimatter-open-publishing/issues/4#issuecomment-376675354,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABJCRl3FAI4VADkYqFB3ooIM03nwaUeRks5tiqm_gaJpZM4S9okT
.

Sorry, I mean ta Grav Page folder with images or entire User folder @rafalzdeb

2018-03-27 23:14 GMT+02:00 Paul Hibbitts<EMAIL_ADDRESS>
Sorry, I mean ta Grav Page folder with images or entire User folder
@rafalzdeb https://github.com/rafalzdeb
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/hibbitts-design/grav-theme-antimatter-open-publishing/issues/4#issuecomment-376677843,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABJCRunlKFwJuDgxe1d4v1KICYttCJApks5tiqvNgaJpZM4S9okT
.

Hi @rafalzdeb , I think I've tracked down the problem. Could you please replace the /js/my.js file in your theme with this one? https://github.com/hibbitts-design/grav-theme-antimatter-open-publishing/tree/master/js
Please let me know how things work out.

Hi Paul,
It worked!
Cheers
Rafał
2018-03-28 0:52 GMT+02:00 Paul Hibbitts<EMAIL_ADDRESS>
Hi @rafalzdeb https://github.com/rafalzdeb , I think I've tracked down
the problem. Could you please replace the /js/my.js file in your theme with
this one? https://github.com/hibbitts-design/grav-theme-antimatter-
open-publishing/tree/master/js
Please let me know how things work out.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/hibbitts-design/grav-theme-antimatter-open-publishing/issues/4#issuecomment-376701548,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABJCRm4XfVgBTS3abXR1Bv6bsGi6QxJlks5tisKWgaJpZM4S9okT
.

Great to hear, an update including this fix will be released soon.


Create blindbrook.txt

https://www.blindbrook.org/bbhs

https://www.blindbrook.org/cms/lib07/NY01913277/Centricity/Domain/8/science 2016 scheduling handouts.pdf
"Honors Computer Science" & "AP Computer Science"
https://www.blindbrook.org/cms/lib/NY01913277/Centricity/Domain/8/2022coursepacket.pdf
"2 Year Sequence"

https://www.blindbrook.org/domain/65

@jbis9051 Pull request merged. Thank you!

YAY! thanks!!!


⚠ WSINGRESOS - GENERICO has degraded performance

In ca91320, WSINGRESOS - GENERICO (https://srvshyweb.yucatan.gob.mx/cgi-bin/wspd_cgi.sh/WService=wsingresos/internet/servicios/wsGenericoPagosWeb.r) experienced degraded performance:

HTTP code: 200
Response time: 2018 ms

Resolved: WSINGRESOS - GENERICO performance has improved in f4c752c.


DPL-nnn Decouple warehouse writes so migrations don't block the process

Describe the Housekeeping
As a developer I would like to decouple writing the warehouse from crawler so the process can continue even when we are running warehouse migrations because that way we could do migrations during working hours without affecting the lab process.
Blocking issues
Describe any other issues or tickets that may be blocking this change.
Additional context
Add any other context about the problem here.

This could be solved by the Heron OKR.

This story won't be needed. At the moment crawler writes in the warehouse, so this problem can be solved during migrations without blocking lab work by stopping crawler, as it does not have to be running continuously, and restart again after finishing. After Heron OKR is done, there will be


[7.3] ErrorSuppressionFixer - support PHP 7.3

Handles also SilencedDeprecationErrorFixer and it's proxy to ErrorSuppressionFixer.

Thank you @kubawerlos.


Tests

I'm struggling with webpack and karma, and an example of those w/mocha would be most appreciated.
DOM and mocha aren't guaranteed, and thats why webpack helps us, build bundles from typically node code (require) etc, mocha uses (describe) and I had an epihany earlier today which I can't get working again: Hot reloading with the mocha-loader.
Will attempt to PR this likely through an npm run-script like:
webpack-dev-server "mocha\!./test/index.js" --inline --hot [--output-file file]

Note, just today I realized that with --output-file testBundle.js (for example) you would browse to http://localhost:8080/testBundle and see the mocha html runner spun up and updating in place.
It was glorious -- link forthcoming if i can achieve that with karma start or something. I think maybe including the test suite in iframe mode would be helpful. I just want a way to get TestUtils.RenderIntoDocument working the simplest possible way in a test suite.

Current status: mocha doesn't like window when I use mocha and karma doesn't like webpack[Jsonp] if I karma start. Errors:
 !!
karma start
INFO [karma]: Karma v0.12.35 server started at http://localhost:9876/
INFO [launcher]: Starting browser ChromeCanary
WARN [web-server]: 404: /favicon.ico
INFO [Chrome 45.0.2420 (Mac OS X 10.10.3)]: Connected on socket Aym65ehI_O6-lTHphf-K with id 21556998
Chrome 45.0.2420 (Mac OS X 10.10.3) ERROR
  Uncaught ReferenceError: webpackJsonp is not defined
  at /Users/dmarr/src/status/test/index.js:1
Chrome 45.0.2420 (Mac OS X 10.10.3): Executed 0 of 0 ERROR (0.138 secs / 0 secs)
dmarr@dmarr ~/src/status (master) $ mocha

/Users/dmarr/src/status/test/common.js:3
window.React = require('react');
^
ReferenceError: window is not defined
    at Object.<anonymous> (/Users/dmarr/src/status/test/common.js:3:1)
    at Module._compile (module.js:456:26)
    at normalLoader (/Users/dmarr/src/status/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:150:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/dmarr/src/status/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:163:7)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at args (/Users/dmarr/src/status/node_modules/mocha/bin/_mocha:308:3)
    at Array.forEach (native)
    at Object.<anonymous> (/Users/dmarr/src/status/node_modules/mocha/bin/_mocha:307:10)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

The configs I'm playing with are here: https://gist.github.com/bc03dcff4e5feef7a2a5


Login page changed according to register page #1608

I have enhanced the login page and now it looks somewhat similar to register page.

Earlier it looked like this -:

solves issue #1608
fixes #1608

@anuragverma108 can you please check this


Grafana doesn't start

Grafana fails to start when starting the swarm. Needs investigation/resolution.

@subfuzion does it happen only on Docker for Mac? I never met this issue.
Can you please provide logs from the container? I would also be interested in the result of docker service ps on the grafana service id.

@ndegory I was under the impression it was happening to everyone last week, at least everyone I talked to during the demo. I'm in the middle of something else right now, but will try to get more detail shortly.

It comes up for me, I'm running ubuntu@macbook

works on my system, as well. Ubuntu 16.04

Ok, looks like maybe it's just me and Ivy (also running Docker for Mac).

It fails for both me and Ivy (both of us running Docker for Mac). However, it is also failing for @freignat91 who is running Linux. Here's the log he sent:
INFO - Download configuration archive file https://github.com/appcelerator/amp-config/archive/0.2.0.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   130    0   130    0     0    204      0 --:--:-- --:--:-- --:--:--   226
100  4150  100  4150    0     0   3421      0  0:00:01  0:00:01 --:--:--  3421
INFO - Overriding configuration file:
INFO - Extra configuration file:
/tmp/tmp.IhbAMi/amp-config-0.2.0/extra-config/grafana
/tmp/tmp.IhbAMi/amp-config-0.2.0/extra-config/grafana/config-dashboard-AMPSwarmHealthRetention.js
/tmp/tmp.IhbAMi/amp-config-0.2.0/extra-config/grafana/config-datasource-influxdb.js
/tmp/tmp.IhbAMi/amp-config-0.2.0/extra-config/grafana/config-dashboard-AMPSwarmHealthRealtime.js
copying /etc/extra-config/grafana/config-dashboard-AMPSwarmHealthRealtime.js
copying /etc/extra-config/grafana/config-dashboard-AMPSwarmHealthRetention.js
converting /etc/extra-config/grafana/config-datasource-influxdb.js
Starting grafana for configuration
t=2016-09-26T19:18:10+0000 lvl=info msg="Starting Grafana" logger=main version=3.1.1 commit=v3.1.0+20-g2bfccd7 compiled=2016-08-01T10:47:55+0000
t=2016-09-26T19:18:10+0000 lvl=info msg="Config loaded from" logger=settings file=/usr/share/grafana/conf/defaults.ini
t=2016-09-26T19:18:10+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.data=/var/lib/grafana"
t=2016-09-26T19:18:10+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.logs=/var/log/grafana"
t=2016-09-26T19:18:10+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.plugins=/var/lib/grafana/plugins"
t=2016-09-26T19:18:10+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.server.http_addr=<IP_ADDRESS>"
t=2016-09-26T19:18:10+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.server.http_port=3001"
t=2016-09-26T19:18:10+0000 lvl=info msg="Path Home" logger=settings path=/usr/share/grafana
t=2016-09-26T19:18:10+0000 lvl=info msg="Path Data" logger=settings path=/var/lib/grafana
t=2016-09-26T19:18:10+0000 lvl=info msg="Path Logs" logger=settings path=/var/log/grafana
t=2016-09-26T19:18:10+0000 lvl=info msg="Path Plugins" logger=settings path=/var/lib/grafana/plugins
t=2016-09-26T19:18:10+0000 lvl=info msg="Initializing DB" logger=sqlstore dbtype=sqlite3
t=2016-09-26T19:18:10+0000 lvl=info msg="Starting DB migration" logger=migrator
t=2016-09-26T19:18:10+0000 lvl=info msg="Executing migration" logger=migrator id="create migration_log table"
Checking that grafana is up...
waiting for availability of grafana...
.t=2016-09-26T19:18:10+0000 lvl=info msg="Executing migration" logger=migrator id="create user table"
.t=2016-09-26T19:18:10+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index user.login"
.t=2016-09-26T19:18:11+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index user.email"
.t=2016-09-26T19:18:11+0000 lvl=info msg="Executing migration" logger=migrator id="drop index UQE_user_login - v1"
.t=2016-09-26T19:18:11+0000 lvl=info msg="Executing migration" logger=migrator id="drop index UQE_user_email - v1"
..t=2016-09-26T19:18:11+0000 lvl=info msg="Executing migration" logger=migrator id="Rename table user to user_v1 - v1"
.t=2016-09-26T19:18:12+0000 lvl=info msg="Executing migration" logger=migrator id="create user table v2"
.t=2016-09-26T19:18:12+0000 lvl=info msg="Executing migration" logger=migrator id="create index UQE_user_login - v2"
.t=2016-09-26T19:18:12+0000 lvl=info msg="Executing migration" logger=migrator id="create index UQE_user_email - v2"
.t=2016-09-26T19:18:12+0000 lvl=info msg="Executing migration" logger=migrator id="copy data_source v1 to v2"
..t=2016-09-26T19:18:13+0000 lvl=info msg="Executing migration" logger=migrator id="Drop old table user_v1"
..t=2016-09-26T19:18:13+0000 lvl=info msg="Executing migration" logger=migrator id="create temp user table v1-7"
.t=2016-09-26T19:18:13+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_temp_user_email - v1-7"
.t=2016-09-26T19:18:14+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_temp_user_org_id - v1-7"
.t=2016-09-26T19:18:14+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_temp_user_code - v1-7"
..t=2016-09-26T19:18:14+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_temp_user_status - v1-7"
.t=2016-09-26T19:18:14+0000 lvl=info msg="Executing migration" logger=migrator id="create star table"
.t=2016-09-26T19:18:15+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index star.user_id_dashboard_id"
.t=2016-09-26T19:18:15+0000 lvl=info msg="Executing migration" logger=migrator id="create org table v1"
.t=2016-09-26T19:18:15+0000 lvl=info msg="Executing migration" logger=migrator id="create index UQE_org_name - v1"
.t=2016-09-26T19:18:15+0000 lvl=info msg="Executing migration" logger=migrator id="create org_user table v1"
.t=2016-09-26T19:18:15+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_org_user_org_id - v1"
.t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="create index UQE_org_user_org_id_user_id - v1"
..t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="copy data account to org"
t=2016-09-26T19:18:16+0000 lvl=info msg="Skipping migration condition not fulfilled" logger=migrator id="copy data account to org"
t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="copy data account_user to org_user"
t=2016-09-26T19:18:16+0000 lvl=info msg="Skipping migration condition not fulfilled" logger=migrator id="copy data account_user to org_user"
.t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="Drop old table account"
t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="Drop old table account_user"
.t=2016-09-26T19:18:16+0000 lvl=info msg="Executing migration" logger=migrator id="create dashboard table"
.t=2016-09-26T19:18:17+0000 lvl=info msg="Executing migration" logger=migrator id="add index dashboard.account_id"
.t=2016-09-26T19:18:17+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index dashboard_account_id_slug"
.t=2016-09-26T19:18:17+0000 lvl=info msg="Executing migration" logger=migrator id="create dashboard_tag table"
.t=2016-09-26T19:18:17+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index dashboard_tag.dasboard_id_term"
..t=2016-09-26T19:18:18+0000 lvl=info msg="Executing migration" logger=migrator id="drop index UQE_dashboard_tag_dashboard_id_term - v1"
.t=2016-09-26T19:18:18+0000 lvl=info msg="Executing migration" logger=migrator id="Rename table dashboard to dashboard_v1 - v1"
..t=2016-09-26T19:18:18+0000 lvl=info msg="Executing migration" logger=migrator id="create dashboard v2"
.t=2016-09-26T19:18:18+0000 lvl=info msg="Executing migration" logger=migrator id="create index IDX_dashboard_org_id - v2"
.t=2016-09-26T19:18:19+0000 lvl=info msg="Executing migration" logger=migrator id="create index UQE_dashboard_org_id_slug - v2"
.t=2016-09-26T19:18:19+0000 lvl=info msg="Executing migration" logger=migrator id="copy dashboard v1 to v2"
.t=2016-09-26T19:18:19+0000 lvl=info msg="Executing migration" logger=migrator id="drop table dashboard_v1"
..t=2016-09-26T19:18:19+0000 lvl=info msg="Executing migration" logger=migrator id="alter dashboard.data to mediumtext v1"
t=2016-09-26T19:18:19+0000 lvl=info msg="Executing migration" logger=migrator id="Add column updated_by in dashboard - v2"
.t=2016-09-26T19:18:20+0000 lvl=info msg="Executing migration" logger=migrator id="Add column created_by in dashboard - v2"
.t=2016-09-26T19:18:20+0000 lvl=info msg="Executing migration" logger=migrator id="Add column gnetId in dashboard"
..t=2016-09-26T19:18:20+0000 lvl=info msg="Executing migration" logger=migrator id="Add index for gnetId in dashboard"
.t=2016-09-26T19:18:20+0000 lvl=info msg="Executing migration" logger=migrator id="Add column plugin_id in dashboard"
.t=2016-09-26T19:18:21+0000 lvl=info msg="Executing migration" logger=migrator id="Add index for plugin_id in dashboard"
.t=2016-09-26T19:18:21+0000 lvl=info msg="Executing migration" logger=migrator id="create data_source table"
.t=2016-09-26T19:18:21+0000 lvl=info msg="Executing migration" logger=migrator id="add index data_source.account_id"
.t=2016-09-26T19:18:21+0000 lvl=info msg="Executing migration" logger=migrator id="add unique index data_source.account_id_name"
.t=2016-09-26T19:18:22+0000 lvl=info msg="Executing migration" logger=migrator id="drop index IDX_data_source_account_id - v1"
.t=2016-09-26T19:18:22+0000 lvl=info msg="Executing migration" logger=migrator id="drop index UQE_data_source_account_id_name - v1"
.t=2016-09-26T19:18:22+0000 lvl=info msg="Executing migration" logger=migrator id="Rename table data_source to data_source_v1 - v1"
.t=2016-09-26T19:18:22+0000 lvl=info msg="Executing migration" logger=migrator id="create data_source table v2"
.\nERROR: unable to start grafana

@ndegory Since you're colocated with @freignat91, it would be good if you can work with him to investigate/resolve this issue when he comes back to the office on Monday.

@subfuzion I'll check tomorrow with @freignat91.
From what I see in the logs it seems that it took too long to start, it reached the (arbitrary) timeout of 12 sec.
Not sure why the migration step takes so long, I'll update the timeout as a workaround, but I'll check again with @freignat91
@subfuzion can you please confirm that your container has same symptoms?

configuration timeout has been updated (24 sec instead of 12 sec) 4 days ago, which is maybe why @freignat91 does not experience issues anymore.

This issue is occurring on my Mac system. There were times where grafana started in the past, however, now it does not at all.

Those SQL statements should be blazing fast. The copy ones don't even run so I wonder where exactly are these operations taking place. Is the sqlite file hosted in the host? Docker for Mac is usually slower, particularly if you're syncing files between host fs and vm fs. Is this the case?

on my system, it takes 2 sec to configure and 2 more sec to be up and running. The sqlite file is not in an explicit mount, just in a VOLUME statement, I don't think it means syncing files between host and vm. Like @pires said, it seems to be related to the slowness of Docker for Mac.
A new image has just been built with go 1.7, it probably has no effect on this issue but a new test would be appreciated (if only I had a Mac ^^).

I'm on 1.12.2. Grafana is starting now. I think my Mac is quite slow as grafana can take upwards of 2 minutes to start.


No handlers could be found for logger "root"

I installed heron following Quick Start Guide, but when I run the heron version.
This error occurred:
No handlers could be found for logger "root"

@kylozw - this issue has been reported sporadically. We did a fix and is in the master. If you compile and install from the master, the issue should go away. Please try it and let us know.

When I built packages on ubuntu, the following happened:
ERROR: missing input file '//scripts/compile:env_exec.sh'.
ERROR: /usr/local/heron/heron/schedulers/tests/java/BUILD:132:1: Creating runfiles tree bazel-out/local-fastbuild/bin/heron/schedulers/tests/java/MesosFrameworkTest.runfiles failed: build-runfiles failed: error executing command /root/.cache/bazel/_bazel_root/ea5f5d1d1e31949bd99eb97a82759a2c/execroot/heron/_bin/build-runfiles bazel-out/local-fastbuild/bin/heron/schedulers/tests/java/MesosFrameworkTest.runfiles_manifest ... (remaining 1 argument(s) skipped): com.google.devtools.build.lib.shell.AbnormalTerminationException: Process terminated by signal 15.
ERROR: /usr/local/heron/third_party/yaml-cpp/BUILD:11:1: //third_party/yaml-cpp:yaml-cpp-srcs: missing input file '//scripts/compile:env_exec.sh'.
ERROR: /usr/local/heron/third_party/yaml-cpp/BUILD:11:1 1 input file(s) do not exist.

should be resolved in https://github.com/twitter/heron/pull/1276

When building - you need to first configure bazel. You need to run
./bazel_configure.py
Cheers
/Karthik
On Fri, Aug 19, 2016 at 6:04 PM Mark Li<EMAIL_ADDRESS>wrote:

should be resolved in #1276 https://github.com/twitter/heron/pull/1276
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/twitter/heron/issues/1280#issuecomment-241156397, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAWcRCgaF53ripK7Y6gGjCcqPtCaPq4Jks5qhjaTgaJpZM4JoQt9
.

@kylozw if you have any other question, you can open a separate issue or ask on Heron's mailing list

closing this issue since I believe this problem is gone.


[Feature]: Rename property "publicKey" for an account in config.json

Describe the feature you would like
In the .taq/config.json file, a sandbox account has a "publicKey" property. However, this isn't really the public key, but the hash of the public key. Therefor it should be renamed to "publicKeyHash".
Is this feature solving a problem?
Properly describes the what the property is.
Please share any additional details you have?
Avoids a name that could be misleading.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

FYI @hu3man


Script upload mechanism no longer working

Hi Shea, as mentioned on Slack, I've also got this problem. I've set JSS_MIGRATED to True but it is still "copying" the script to the distribution point:
JSSImporter: Script: Carbon Copy Cloner-postinstall.sh created.
JSSImporter: Copying /Users/Me/Library/AutoPkg/RecipeOverrides/Carbon Copy Cloner-postinstall.sh to all distribution points.
JSSImporter: Copying to jamfproserver
JSSImporter: Copied /Users/Me/Library/AutoPkg/RecipeOverrides/Carbon Copy Cloner-postinstall.sh

It cannot really be copying it, because I do not have a Scripts folder. Casper Admin shows the script as "missing" and there is an empty script object in the database. I'm using the default way of setting up the JSSImporter settings.
$ defaults read com.github.autopkg
{
    "API_PASSWORD" = blahblah;
    "API_USERNAME" = AutoPkg;
    "JSS_MIGRATED" = True;
    "JSS_REPOS" =     (
                {
            name = JPShare;
            password = "blahblahblah";
        }
    );
    "JSS_URL" = "https://jamfproserver/template";
}

On further investigation, it looks like the /dbfileupload API parameter is no longer valid. Scripts appear to be uploaded using the /scripts parameter, so they need to be "uploaded" (i.e. POST/PUT) in the same way as /computerextensionattributes...kind of inconvenient, since that means you have to embed the script in the XML template, but that wouldn't be too hard to wrap in a script.
Understandably, I can see it is not very feasible for you to refactor code using an API you no longer have access to. I'm not sure I have the Python skills to refactor python-jss to change this behaviour, but I'll try to have a look.
Of course things might change again with Jamf Pro 10 - for example there is a new field in Policies for "Self Service Display Name", allowing the policy name to be something only admins need to see (although this isn't in the API yet - feature request already in).

Hey @grahampugh thanks for the update.
Do you know which version took away the dbfileupload endpoint?
I seem to remember that the JSS didn't have an official way of reporting its version to API clients, so it's indeed hard to work around this without either using a configuration toggle, or possibly a private API call that has the JSS version.
The actual code wouldn't be that hard, since as you point out it has already been done with computerextensionattributes.
Obviously, maintaining two versions of python-jss for before and after this change is crazy too!

FWIW, this is how it should have been done long ago! I just need to know at which JSS version it should be supported, and whether I can even determine JSS version from the client side, or whether we need to add or update the configuration stuff for python-jss. This should also be added to python-jss, since that's where the real action happens.

I haven't been able to find out when this changed - nothing obvious in the Jamf documentation. I'll ask in the jss-api channel.

Ready for testing! (See releases page beta).


make a github pages for this

i'm happy to give you meinkraft.glua.team and server.meinkraft.glua.team
the aim of the github-pages should be to notify visitors to glua.team of our server and our addons

solved


looprestoration.rs: Cleanup in aarch64 functions

The aarch64 functions were already basically clean, minus some redundant type annotations and other minor issues. This PR cleans those up.

we should also make the ptr::null_mut()s into safe slices.

I considered that, but I don't think it's worth doing. The only usage of those pointers is to pass to asm routines, they're never dereferenced or indexed into from Rust code. So I don't think we gain anything by making them slices instead of pointers, since we would just have to convert them back to pointers before passing to asm. I think the code as-is is as clean and safe as we can reasonably make it.

we should also make the ptr::null_mut()s into safe slices.

I considered that, but I don't think it's worth doing. The only usage of those pointers is to pass to asm routines, they're never dereferenced or indexed into from Rust code. So I don't think we gain anything by making them slices instead of pointers, since we would just have to convert them back to pointers before passing to asm. I think the code as-is is as clean and safe as we can reasonably make it.

But we do do .split_at_mut type operations.  I think that would be better in Rust to ensure we don't have mutable aliasing, even if they're just being passed to asm.


Gracefully handle missing metadata

Some instances (e.g. qoto.org, but there are several others) do not include metadata in their nodeinfo.
This has the side-effect that deserialising the nodeinfo fails completely.
This change gracefully handles missing nodeinfo for cases where it isn't needed.

Please see the schema: http://nodeinfo.diaspora.software/ns/schema/2.0
metadata is a required field.
This is just a bad server that doesn't follow the schema.

Both schema and nodeinfo are provided by the server: https://qoto.org/.well-known/nodeinfo
Are there so many servers that declare their own schema but don't follow it?

They do indeed provide the schema, but they don't seem to be including metadata. See:
https://qoto.org/nodeinfo/2.0
I don't know if there are "so many" servers that don't follow the schema they declare, but within a few hours of testing yesterday, I came across 3 or 4, just from messages in my own home timeline.
🤷🏼♂

To be honest, I don't want to merge this.
Why do we have to deal irregularly for rouge servers that don't follow the schema?

That's fair.


Extract edge context into its own library

I spent some time thinking about how the concept of automatically propagated headers might be extended, and ended up deciding that having a single edge context header name that baseplate knows while letting the content of it be defined elsewhere is the cleanest way to do this in our current setup. So... this just reduces baseplate's knowledge of what's inside the context to nothing and relies entirely on a single factory interface for parsing them. The rest happens in the library. This will thankfully be a pretty simple change in services using it!
https://github.com/reddit/edgecontext.py (more to be done there)

@fishy tagging you on this to make sure you're OK with the extraction of this stuff from the main baseplate thrift file, since I imagine that has implications for baseplate.go.

@fishy tagging you on this to make sure you're OK with the extraction of this stuff from the main baseplate thrift file, since I imagine that has implications for baseplate.go.

:fish: lgtm!

:fish: lgtm!


enable OCCP +EvMeter

hi please how to enable OCCP ?
i have an wem3080TR from iammeter.
i read on a previous release note that occp has been removed from the lcd and available in the web ui.
but i cannot found it. it is necessary to have the rfid module ? i wanted to buy it but its unavailable (some one know a rfid reader alternative ?)
also i do not realy understand the "/POST /evmeter" i have an esp32 with a jSY-MK-194T that update this api and also the mainsmeter but i do not quite understand the purpose of "import_active_energy, export_active_energy and import_active_power" those value should be what the car is importing back to house ? or it should be data from my solar panel for me the evmeter is a ct clamp on the phase of my type 2 cable so i do not understand the three energy and power.
Regards,

For OCPP you should compile the spurce code yourself with the -e ocpp option added the compile command line. The RFID reader is not necessay for OCPP.
If you are measuring your currents at the connection of the grid to your house, you should configure this device as your MainsMeter.
If the device is measuring the currents of your EV charging, you should configure it as an EVMeter.
import_active_energy, export_active_energy and import_active_power are just relays of the respective values you posted through the API, if any.
Your use of language is unclear. Please use proper punctuation and Google Translate to improve our communication.

Hi thank you for your quick reply.
sorry, i'll try to be more clear/precise.
So bassically i have an iammeter WEM3080TR (https://www.iammeter.com/products/three-phase-meter)
I have a contract with12 KVA single phase.
Clamp A is monitoring the phase from the grid.
Clamp B is monitoring a 32A EV wallbox.
Clamp C is monitoring the AC phase coming from my solar panels.
So with an esp32 running esphome i'm doing http_request.GET for the clamp A (Grid phase).
then i do http_request.POST of the values of the Grid clamp directly to Smart EVSE via the api (POST: /currents) so those values feed the MAINSMET every 1s.
Now for EV METER i have a jSY-MK-194T with one clamp (lets call it clamp D.) wrap around the phase of my Type 2 cable.
I then do http_request.POST (/ev_meter) to feed the SMART EVSE every 1s.
But furthermore in the api for the ev_meter we can populate "import_active_energy, export_active_energy and import_active_power "
what are those values ? import_active_energy should be the energy taken from the grid (clamp A) in Wh ?
and what is the definition of the two other please ?
should those value need to come from the car (Clamp D)  ?
or a combination of clamp A (grid) and clamp C (solar grid) ?
regards,

Clamp A is MainsMeter,  clamp D would be EVMeter. Usually on the EVMeter there will be no energy exported to the grid, so you can ignore that variable.
Active Power is the power in W (if your meter provides that).

thanks your for your time !!


Chef Server still asks for accepting license when built from source

Chef Server Version
13.2.3
Platform Details
Built on Ubuntu 18.04
Configuration
N/A -- building the deb package
Scenario:
After reading Introducing the New Chef: 100% Open, Always, it seems clear that the Chef EULA should only apply to the precompiled binaries as provided by Chef Software, e.g. via downloads.chef.io, and that the source code and all derivatives from it should be covered by the Apache 2.0 License.
However, after compiling the chef-server deb package on my machine, I am still compelled to accept the Chef EULA for the Chef Infra Server component (along with that of the client and inspec).
While I understand the technical reasons for this prompt (the license check is baked into the code), it appears that Chef Software hasn't fully complied with their own policy of licensing the source code as Apache 2.0 if the direct result of a compilation leads to accepting terms that shouldn't apply.
Steps to Reproduce:
$ apt-get install ruby rebar git zlib1g-dev libsqlite3-dev libpq-dev build-essential bundler autoconf
$ git clone https://github.com/chef/chef-server
$ cd chef-server/omnibus && bundle install --binstubs && ./bin/omnibus build chef-server
$ dpkg -i pkg/pkg/chef-server-core_13.2.3+20200428135755-1_amd64.deb
$ chef-server-ctl reconfigure
+---------------------------------------------+
            Chef License Acceptance

Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/

Licenses that need accepting:
  * Chef Infra Server
  * Chef Infra Client
  * Chef InSpec

Do you accept the 3 product licenses (yes/no)?

>

Expected Result:
The process should not ask for accepting the Chef EULA, at least in the case of Chef Infra Server as this version of the product was not distributed by Chef Software.
Perhaps the license check should be added separately by Chef Software' own compilation and distribution pipeline at a later stage, and the source code should be exempt of such logic.
Actual Result:
There was a prompt for accepting the Chef EULA even for the Chef Infra Server component.

Doing your own build isn't sufficient to be compliant with the Chef EULA, you need a build that has been stripped of all Chef's branding. Come see us in the Chef Community Slack's #community-distros channel, we can help you build your own, or you can just use the stuff already built by cinc.sh . Do note cinc doesn't publish a server yet, but then server 12 isn't EOL yet. Hope this helps.

@bobchaos it does, actually, thanks!


M01-Unit 8

Module: M01-Unit 8
Lab/Demo: 00
Task: 2
Step: 06 and 12
Description of issue: Wrong password mentioned. Please change it to TestPa$$w0rd! in steps 6 and 12.

MOC Labs Review has resolved this issue with PR #53


Question - How to override/modify a policy?

Let us know the feedback or general question
I've got a general question about policies.
Apologies if this is already answered in the documentation, but I couldn't see anything, so here's the question.
Is there any way to override or modify a policy?
For example, I'd like to change a policy's effect from "Deny" to "Audit".
Ideally, I'd like to do this through the repository created by the accelerator so all changes are tracked through version control.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hi @cspring86, here are the steps  for extending the ALZ Default Policy Assignments module.
You can override the templateFilePath directory property within the bicep-templates.yaml file for the ALZ Default Policy Assignments module with a custom module as well as a custom lib directory as well.


Neo4jDataCollector contains 1 abstract method and must therefore be declared abstract or implement the remaining methods

Getting following error when tried this on Symfony4
In Neo4jDataCollector.php line 90:
Error: Class Neo4j\Neo4jBundle\Collector\Neo4jDataCollector contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface::reset)

Is there any plan for a new release that will contain the fix for this?

@Nyholm it works, though, I'm curious about his comment,

"I'm not sure if the resetting of the QueryLogger is actually needed."

It is. You do not want to have anything that grows indefinitely.


Jeff Schaller: Watch vinayaknetralaya.org

Jeff Schaller requests the watch of the watch_keyword vinayaknetralaya\.org. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

vinayaknetralaya\.org has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Daniil in Charcoal HQ


Adding python 3.9 to the GitHub Action workflow

🚨🚨 Feature Request Adding python 3.9 to the GitHub Action workflow

[x] Issue #371

Is your feature request related to a problem?
Adding python 3.9 to the GitHub Action workflow
If your feature will improve HUB
Python version 3.9 becomes sooner or later the standard workhorse, so it should be included to cover also this version as well.

In order to verify if Python 3.9 is supported by all dependencies of Hub. Working with a local dependency manager like:

Pipenv
Poetry

will easily figure out about current status quo. Both tools will check if the dependencies are compatible with python 3.9

Closing for now, will re-open when we run into dependency issues.


Devices with small resolution has issues with layouts.

UI layouts should be modified to support smaller resolutions.

Done, but requires testing on small screens


Better VVV support

get vvv-utilities/provision.sh to run on vagrant provision
install Cypress inside Vagrant in provision.sh. Currently getting permissions issues:

vagrant@vvv  ~ $ sudo npm install -g cypress
/usr/bin/cypress -> /usr/lib/node_modules/cypress/bin/cypress

><EMAIL_ADDRESS>postinstall /usr/lib/node_modules/cypress
> node index.js --exec install

Installing Cypress (version: 3.0.2)

internal/streams/legacy.js:59
      throw er; // Unhandled stream error in pipe.
      ^

Error: EACCES: permission denied, open '/usr/lib/node_modules/cypress/cypress.zip'
    at Error (native)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: `node index.js --exec install`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall 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/vagrant/.npm/_logs/2018-07-23T03_21_48_935Z-debug.log

Will revisit if necessary.


Tabs!

Design as a single instance application and behave like webbrowser's tabs.

resolved at fa1159f96c18e2c2a8e99ed329f5b2a4cbe08a31 25fb7e5a2f089e130681674dc19757536cb38c5c


mapWithIndex and zipWithIndex on the Composed typeclass do not work

These should be removed.

Also on Nested which make use of them

Release in 10.1.0


Unexpected cyclic substitution loop error

Parsing following valid config
c: {
    q: {
        a: [2, 5]
    }
}
c: {
    m: ${c.q} {p: 75}
    m.a: ${c.q.a} [6]
}

results in exception
Unhandled exception. Hocon.HoconParserException: Invalid substitution declaration. A cyclic substitution loop is detected in the Hocon file.. At path 'c.q.a', line 8, position 14.
 ---> Hocon.HoconException: A cyclic substitution loop is detected in the Hocon file.
   at Hocon.Parser.ResolveSubstitution(HoconSubstitution sub)
   at Hocon.Parser.ResolveSubstitutions()
   --- End of inner exception stack trace ---
   at Hocon.Parser.ResolveSubstitutions()
   at Hocon.Parser.ParseText(String text, Boolean resolveSubstitutions, HoconIncludeCallbackAsync includeCallback)
   at Hocon.Parser.Parse(String text, HoconIncludeCallbackAsync includeCallback)

EXPECTED:
c: {
    q: {
        a: [2, 5]
    }
}
c: {
    m: { a: [2, 5, 6], p: 75 }
}

@Aaronontheweb I have added test to verify this works.
On the dev branch before I have fixed few issues in the milestone, this test was failing (I have just checked that). But after applying latest fixes, this does not reproduce anymore.
I think that this is related to #127 where I have added deep cloning of substituted values - so now when performing substitution it will always be different values in different places, and no cycles are possible.


userparameter_nginx.conf - correct comment Redis -> NGINX

Just correcttion in comment Redis -> NGINX

Thanks, I have fixed.


Add link to Patterns of Software by Richard Gabriel

I was looking for this resource after hearing it in the podcast and found an
online version as well. Also, I fixed the spelling of Gabriel (from Gabrielle).

Thanks!


Widget templates not covered (when they are clearly used).

I have Widget such as:
class PlanChoiceWidget(RadioSelect):
    option_template_name = "plans/plan_choice_widget.html"

and tests such as:
class PlanChoiceWidgetTests1(TestCase):

    def setUp(self):
        self.factory = RequestFactory()
        self.plan_pricing = baker.make(
            "PlanPricing", plan__name="Foo", price=Decimal("10.00"),
            has_automatic_renewal=True
        )
        self.request = self.factory.get("")
        self.request.user = baker.make("accounts.UserProfile")

    def render_widget(self, plan):
        widget = PlanChoiceWidget()
        choice_data = {
            "name": "plan_choice",
            "value": plan.pk,
            "attrs": {"id": "id_plan_choice"},
        }
        widget.choices = [(plan.pk, plan)]
        widget.request = self.request
        return widget.render(**choice_data)

    def test_plan_choice_widget_render(self):
        rendered_html = self.render_widget(self.plan_pricing)

        self.assertInHTML(
            '
10
',
            rendered_html,
        )
        self.assertIn('data-amount="10.00"', rendered_html)
        self.assertIn('data-renewal="True"', rendered_html)

    def test_non_recurring_plan(self):
        self.plan_pricing.has_automatic_renewal = False
        self.plan_pricing.save()

        rendered_html = self.render_widget(self.plan_pricing)

        self.assertIn('<input type="radio" name="plan_choice"', rendered_html)

When I look at the coverage it shows 0% for this template although lines from plans/plan_choice_widget.html template are matched by the tests.
My .coveragerc:
[run]
omit =
   */virtualenvs/*
   */migrations/*
   */site-packages/*
   *.txt
   */settings/dev.py
plugins =
    django_coverage_plugin
branch = True
source = blenderhub
relative_files = True

I am using django-coverage-plugin version 3.1.0, coverage version 7.4.1.
More widget templates from my project are not matched.
Is this a known problem or should I gather more information?

I believe this is because the function that sniffs the frame for the filename fails to work on a template render - it seems that the self object in the relevant context only contains a NodeList, which does not have an origin.

I'll create a PR shortly, but my patch seems to work (waiting on a CI run to check).
@@ -104,5 +104,15 @@
 def filename_for_frame(frame):
     try:
-        return frame.f_locals["self"].origin.name
-    except (KeyError, AttributeError):
+        self = frame.f_locals["self"]
+    except KeyError:
         return None
+
+    try:
+        return self.origin.name
+    except AttributeError:
+        pass
+
+    try:
+        return self[0].origin.name
+    except (IndexError, AttributeError):
+        pass


Add flags to configure remote LanguageTool server

This pull request adds two new flags, --host and --port, to the command-line interface. These flags allow users to configure the address and port of the remote LanguageTool server. By default, the server address is set to http://<IP_ADDRESS> and the port is set to 8081.

Thanks for the contribution.


Update go dependencies to solve #29 from trivago/nomad-pot-driver

Fix https://github.com/trivago/nomad-pot-driver/issues/29
@clausecker I created the nomad-pot-driver but no longer work at trivago. I will try to keep this fork up to date.

Thanks for the help.


Use record stack lookup for poly associations that don't have a class

This updatse record stacks to be able to use their lookup hash for
poly associations that don't have a record class because their
foreign type attribute hasn't been set. This allows record stacks
to use their factory config to get record classes that have been
configured for the association. If a lookup value exists for one
of the record classes then it is used. This makes poly
associations work like non poly associations so they don't build
new values for a record class that they've already built a value
for.
This adds a record_classes_for to the AssociationFactoryLookup
that takes an association and instead of returning a configured
factory, it returns all the configured factory record classes.
This is demetered by the model and record factory configs so the
stacks can use it to get a set of record classes that can be used
with their lookup.
Next, this updates the AssociationData to have a
lookup_record_classes method that returns the record classes
for its association. These are then used by the record stack to
get the intersection of the record classes and the lookups keys.
Finally, a random record class is chosen from the intersection
and used to get a lookup value. Typically, there will only be one
value in the intersection unless a polymorphic association has
been configured with many factories and all of those records have
been built already by the stack.
Finally, this fixes an issue with the lookups storing their
association data record class instead of the associated record
datas record class. The difference is subtle but poly association
datas record class can be nil so nil values would get stored
in the lookup and not used again.
@kellyredding - Ready for review. I'm still working through our big app to make sure there are no other issues. I'm probably about 2/3 through its factories.

@jcredding "This updates record stacks ..." in commit msg

@jcredding thanks for explaining things with me.  I'm good with this in general 👎


[BUG] Publishing OpenAPI v3 JSON fails - publishing the same specifications in YAML works

Release version
4.1.0
Describe the bug
In my APIM lab I have a sample API called Echo API. I exported the API through the Azure Portal and chose the OpenAPI v3 JSON format, deleted the API and tried to publish the API with APIOps through a pipeline in Azure DevOps. I get an error message in the pipeline. See below for details.
If I try the same thing, but choosing to export OpenAPI v3 YAML and publishing with APIOps, it works.
If I try to import the JSON file to APIM through Azure Portal the import works as expected.
Expected behavior
APIOps should treat JSON and YAML the same.
Actual behavior
When trying to publish the API with the JSON file, the publisher gives the following error in the pipeline (resource names replaced with ***):
crit: Publisher[0]
      System.Net.Http.HttpRequestException: HTTP request to URI https://management.azure.com/subscriptions/***/resourceGroups/***/providers/Microsoft.ApiManagement/service/***/apis/echo-api?api-version=2022-04-01-preview&asyncId=6411cd42217d200cac3f6dff&asyncCode=201 failed with status code 400. Content is '{"error":{"code":"ValidationError","message":"One or more fields contain incorrect values:","details":[{"code":"ValidationError","target":"path","message":"'path' must not be empty."}]}}'.
         at common.HttpPipelineExtensions.Validate(Response response, Uri requestUri)
         at common.HttpPipelineExtensions.WaitForLongRunningOperation(HttpPipeline pipeline, Response response, CancellationToken cancellationToken)
         at common.HttpPipelineExtensions.PutResource(HttpPipeline pipeline, Uri uri, JsonObject resource, CancellationToken cancellationToken)
         at publisher.Program.<>c__DisplayClass12_0.<<GetPutRestResource>b__0>d.MoveNext()
      --- End of stack trace from previous location ---
         at publisher.Api.PutApi(ApiName apiName, ApiInformationFile apiInformationFile, ApiSpecificationFile specificationFile, JsonObject configurationApiJson, ServiceUri serviceUri, PutRestResource putRestResource, ILogger logger, CancellationToken cancellationToken)
         at publisher.Api.<>c__DisplayClass23_0.<<ProcessArtifactsToPut>b__4>d.MoveNext()
      --- End of stack trace from previous location ---
         at System.Threading.Tasks.Parallel.<>c__50`1.<<ForEachAsync>b__50_0>d.MoveNext()
      --- End of stack trace from previous location ---
         at common.IEnumerableExtensions.ForEachParallel[T](IEnumerable`1 enumerable, Func`2 action, CancellationToken cancellationToken)
         at publisher.Api.ProcessArtifactsToPut(IReadOnlyCollection`1 files, JsonObject configurationJson, ServiceDirectory serviceDirectory, ServiceUri serviceUri, PutRestResource putRestResource, ILogger logger, CancellationToken cancellationToken)
         at publisher.Service.ProcessArtifactsToPut(IReadOnlyCollection`1 files, JsonObject configurationJson, ServiceDirectory serviceDirectory, ServiceUri serviceUri, ListRestResources listRestResources, PutRestResource putRestResource, DeleteRestResource deleteRestResource, ILogger logger, CancellationToken cancellationToken)
         at publisher.Publisher.ProcessCommitIdFilesToPut(IReadOnlyCollection`1 commitIdFilesToPut, CancellationToken cancellationToken)
         at publisher.Publisher.RunWithCommitId(CommitId commitId, CancellationToken cancellationToken)
         at publisher.Publisher.Run(CancellationToken cancellationToken)
         at publisher.Publisher.ExecuteAsync(CancellationToken cancellationToken)
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...
fail: Microsoft.Extensions.Hosting.Internal.Host[9]
      BackgroundService failed

When formatting the error message from the text above it's a bit more readable:
{
  "error": {
    "code": "ValidationError",
    "message": "One or more fields contain incorrect values:",
    "details": [
      {
        "code": "ValidationError",
        "target": "path",
        "message": "'path' must not be empty."
      }
    ]
  }
}

Reproduction Steps
Try to publish the following file JSON file:
https://gist.github.com/robertbrandso/01d5a5f40876956b24a2b191357eb368
Try to publish the following YAML file:
https://gist.github.com/robertbrandso/01bb4c3ec776dfe64788aea17bddbef1
The following apiInformation.json were used:
https://gist.github.com/robertbrandso/62dd66880a35d9d8f88b53f2a57ef981

@robertbrandso - thanks for the detailed description of your issue. I'm not able to replicate it, unfortunately. Tried publishing with the files you specified, and everything went just fine.

Can you enable trace logging and update this issue with the contents of your API PUT request? You should see something like this in the publisher task logs:
Putting API echo...
trce: PutRestResource[0]
      Beginning request to put REST resource {
        "properties": {
          "apiRevision": "1",
          "authenticationSettings": {},
          "displayName": "Echo API",
          "isCurrent": true,
          "path": "echo",
          "protocols": [
            "https"
          ],
          "serviceUrl": "http://echoapi.cloudapp.net/api",
          "subscriptionKeyParameterNames": {
            "header": "Ocp-Apim-Subscription-Key",
            "query": "subscription-key"
          },
          "subscriptionRequired": false,
          "format": "openapi",
          "value": "{\n  \u0022openapi\u0022: \u00223.0.1\u0022,\n  \u0022info\u0022: {\n    \u0022title\u0022: \u0022Echo API\u0022,\n    \u0022description\u0022: \u0022Description\u0022,\n    \u0022version\u0022: \u00221.0\u0022\n  },\n  \u0022servers\u0022: [\n    {\n      \u0022url\u0022: \u0022https://apim-lab1.azure-api.net\u0022\n    }\n  ],\n  \u0022paths\u0022: {\n    \u0022/resource\u0022: {\n      \u0022get\u0022: {\n        \u0022summary\u0022: \u0022Retrieve resource\u0022,\n        \u0022description\u0022: \u0022A demonstration of a GET call on a sample resource. It is handled by an \\\u0022echo\\\u0022 backend which returns a response equal to the request (the supplied headers and body are being returned as received).\u0022,\n        \u0022operationId\u0022: \u0022retrieve-resource\u0022,\n        \u0022parameters\u0022: [\n          {\n            \u0022name\u0022: \u0022param1\u0022,\n            \u0022in\u0022: \u0022query\u0022,\n            \u0022description\u0022: \u0022A sample parameter that is required and has a default value of \\\u0022sample\\\u0022.\u0022,\n            \u0022required\u0022: true,\n            \u0022style\u0022: \u0022form\u0022,\n            \u0022schema\u0022: {\n              \u0022enum\u0022: [\n                \u0022sample\u0022\n              ],\n              \u0022type\u0022: \u0022string\u0022,\n              \u0022default\u0022: \u0022sample\u0022\n            }\n          },\n          {\n            \u0022name\u0022: \u0022param2\u0022,\n            \u0022in\u0022: \u0022query\u0022,\n            \u0022description\u0022: \u0022Another sample parameter, set to not required.\u0022,\n            \u0022style\u0022: \u0022form\u0022,\n            \u0022schema\u0022: {\n              \u0022type\u0022: \u0022number\u0022\n            }\n          }\n        ],\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022Returned in all cases.\u0022\n          }\n        }\n      },\n      \u0022put\u0022: {\n        \u0022summary\u0022: \u0022Modify Resource\u0022,\n        \u0022description\u0022: \u0022A demonstration of a PUT call handled by the same \\\u0022echo\\\u0022 backend as above. You can now specify a request body in addition to headers and it will be returned as well.\u0022,\n        \u0022operationId\u0022: \u0022modify-resource\u0022,\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022OK\u0022\n          }\n        }\n      },\n      \u0022post\u0022: {\n        \u0022summary\u0022: \u0022Create resource\u0022,\n        \u0022description\u0022: \u0022A demonstration of a POST call based on the echo backend above. The request body is expected to contain JSON-formatted data (see example below). A policy is used to automatically transform any request sent in JSON directly to XML. In a real-world scenario this could be used to enable modern clients to speak to a legacy backend.\u0022,\n        \u0022operationId\u0022: \u0022create-resource\u0022,\n        \u0022requestBody\u0022: {\n          \u0022content\u0022: {\n            \u0022application/json\u0022: {\n              \u0022example\u0022: {\n                \u0022vehicleType\u0022: \u0022train\u0022,\n                \u0022maxSpeed\u0022: 125,\n                \u0022avgSpeed\u0022: 90,\n                \u0022speedUnit\u0022: \u0022mph\u0022\n              }\n            }\n          }\n        },\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022OK\u0022\n          }\n        }\n      },\n      \u0022delete\u0022: {\n        \u0022summary\u0022: \u0022Remove resource\u0022,\n        \u0022description\u0022: \u0022A demonstration of a DELETE call which traditionally deletes the resource. It is based on the same \\\u0022echo\\\u0022 backend as in all other operations so nothing is actually deleted.\u0022,\n        \u0022operationId\u0022: \u0022remove-resource\u0022,\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022OK\u0022\n          }\n        }\n      },\n      \u0022head\u0022: {\n        \u0022summary\u0022: \u0022Retrieve header only\u0022,\n        \u0022description\u0022: \u0022The HEAD operation returns only headers. In this demonstration a policy is used to set additional headers when the response is returned and to enable JSONP.\u0022,\n        \u0022operationId\u0022: \u0022retrieve-header-only\u0022,\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022OK\u0022\n          }\n        }\n      }\n    },\n    \u0022/resource-cached\u0022: {\n      \u0022get\u0022: {\n        \u0022summary\u0022: \u0022Retrieve resource (cached)\u0022,\n        \u0022description\u0022: \u0022A demonstration of a GET call with caching enabled on the same \\\u0022echo\\\u0022 backend as above. Cache TTL is set to 1 hour. When you make the first request the headers you supplied will be cached. Subsequent calls will return the same headers as the first time even if you change them in your request.\u0022,\n        \u0022operationId\u0022: \u0022retrieve-resource-cached\u0022,\n        \u0022parameters\u0022: [\n          {\n            \u0022name\u0022: \u0022param1\u0022,\n            \u0022in\u0022: \u0022query\u0022,\n            \u0022description\u0022: \u0022A sample parameter that is required and has a default value of \\\u0022sample\\\u0022.\u0022,\n            \u0022required\u0022: true,\n            \u0022style\u0022: \u0022form\u0022,\n            \u0022schema\u0022: {\n              \u0022enum\u0022: [\n                \u0022sample\u0022\n              ],\n              \u0022type\u0022: \u0022string\u0022,\n              \u0022default\u0022: \u0022sample\u0022\n            }\n          },\n          {\n            \u0022name\u0022: \u0022param2\u0022,\n            \u0022in\u0022: \u0022query\u0022,\n            \u0022description\u0022: \u0022Another sample parameter, set to not required.\u0022,\n            \u0022style\u0022: \u0022form\u0022,\n            \u0022schema\u0022: {\n              \u0022type\u0022: \u0022string\u0022\n
 }\n          }\n        ],\n        \u0022responses\u0022: {\n          \u0022200\u0022: {\n            \u0022description\u0022: \u0022OK\u0022\n          }\n        }\n      }\n    }\n  },\n  \u0022components\u0022: {\n    \u0022securitySchemes\u0022: {\n      \u0022apiKeyHeader\u0022: {\n        \u0022type\u0022: \u0022apiKey\u0022,\n        \u0022name\u0022: \u0022Ocp-Apim-Subscription-Key\u0022,\n        \u0022in\u0022: \u0022header\u0022\n      },\n      \u0022apiKeyQuery\u0022: {\n        \u0022type\u0022: \u0022apiKey\u0022,\n        \u0022name\u0022: \u0022subscription-key\u0022,\n        \u0022in\u0022: \u0022query\u0022\n      }\n    }\n  },\n  \u0022security\u0022: [\n    {\n      \u0022apiKeyHeader\u0022: [ ]\n    },\n    {\n      \u0022apiKeyQuery\u0022: [ ]\n    }\n  ]\n}"
        }
      } at URI https://management.azure.com/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ApiManagement/service/xxx/apis/echo?api-version=2022-04-01-preview...
dbug: PutRestResource[0]
      Successfully put REST resource at URI https://management.azure.com/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ApiManagement/service/xxx/apis/echo?api-version=2022-04-01-preview...

Hi, @guythetechie.
I tried again and got the same error as last time, but I think I understand why now after seeing your example trace log.
In my trace log I didn't see the properties from apiInformation.json, because the file were checked in earlier and wasn't part of the last commit. When I changed something in apiInformation.json - just added a line break - and I did the same with specification.json, both files was commited and the publisher published the API.
It feels that the design here is a bit vulnerable and fragile, when you have to count on git commit, and not publishing the APIs in a declarative way.

@robertbrandso - We got a similar question in #226. It looks like we might need to do a better job documenting the default behavior (publish from specific commit), and how to override it. If you used our documentation, would you mind sharing the link so we can review for clarity?

The default behavior of the pipeline is to publish changes in the last commit.
https://github.com/Azure/apiops/blob/f9110e113be4b405401d34e8c71fc5441ad3cad9/tools/azdo_pipelines/run-publisher.yaml#L17
If you want to publish everything (not just changes in the last commit), set the parameter value to publish-all-artifacts-in-repo when running the pipeline.

@waelkdouh, yea - I both read about and tried the option to republish everything, but I get some error 400 messages when using it. Unfortunately I haven't had time to troubleshoot yet. I'll open a new issue if I don't get passed the error.
@guythetechie, I tried to follow your guide at https://azure.github.io/apiops. It wasn't before I walked through the pipeline yaml file, step by step, on my own I understood how things worked - and got it to work. Maybe everything should be in the wiki instead?

@waelkdouh @guythetechie I wasn't sure on how to reach you, so I'll try to post it here as it is partly related on what we discussed in the thread.
Just wanted to let you know I have created an alternative APIOps, which is declarative, highly inspired by your APIOps project🙂  Thank you for great inspiration. Feel free check it out here:
https://github.com/robertbrandso/terraform-azurerm-apim-apiops/wiki