Workflows 2.0 API Functional Tests

@RackHD/corecommitters @srinia6 @abildw @geoff-reid

*** BUILD #335 ***
Test Name: test_workflowTasks_put
Error Details: Shell commands != fn_1
-------------------- >> begin captured logging << --------------------
tests.api.v1_1.workflowTasks_tests: INFO: Adding workflow task:
tests.api.v1_1.workflowTasks_tests: INFO: {
    "friendlyName": "fn_1",
    "implementsTask": "im_1",
    "injectableName": "in_1",
    "options": {},
    "properties": {}
}
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v1_1/workflowTasks_tests.py", line 88, in test_workflowTasks_put
    assert_equal(readFriendlyName,self.workflowTaskDict.get('friendlyName'))
  File "/usr/local/lib/python2.7/dist-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
'Shell commands != fn_1\n-------------------- >> begin captured logging << --------------------\ntests.api.v1_1.workflowTasks_tests: INFO: Adding workflow task: \ntests.api.v1_1.workflowTasks_tests: INFO: {\n    "friendlyName": "fn_1",\n    "implementsTask": "im_1",\n    "injectableName": "in_1",\n    "options": {},\n    "properties": {}\n}\n--------------------- >> end captured logging << ---------------------'

Test Name: test_workflowTasks_put
Error Details: 'ApiApi' object has no attribute 'workflows_get_all_tasks'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflowTasks_tests.py", line 41, in test_workflowTasks_put
    WorkflowApi().workflows_get_all_tasks()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_all_tasks'

Test Name: test_node_workflows_post
Error Details: No JSON object could be decoded
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 306, in test_node_workflows_post
    timeout = self.__post_workflow(id,'Graph.Discovery',{})
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 93, in __post_workflow
    status = self.__get_workflow_status(id)
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 86, in __get_workflow_status
    data = self.__get_data()
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 80, in __get_data
    return loads(self.__client.last_response.data)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Test Name: test_workflows_get
Error Details: 'ApiApi' object has no attribute 'workflows_get'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 57, in test_workflows_get
    Api().workflows_get()
AttributeError: 'ApiApi' object has no attribute 'workflows_get'

Test Name: test_workflows_post
Error Details: 'ApiApi' object has no attribute 'workflows_post'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 65, in test_workflows_post
    Api().workflows_post(body={"name": 'Graph.noop-example'})
AttributeError: 'ApiApi' object has no attribute 'workflows_post'

Test Name: test_workflows_graphs_get
Error Details: 'ApiApi' object has no attribute 'workflows_get_graphs'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 95, in test_workflows_graphs_get
    Api().workflows_get_graphs()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_graphs'

Test Name: test_workflows_graphs_put
Error Details: 'ApiApi' object has no attribute 'workflows_get_graphs_by_name'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 105, in test_workflows_graphs_put
    Api().workflows_get_graphs_by_name('*')
AttributeError: 'ApiApi' object has no attribute 'workflows_get_graphs_by_name'

Test Name: test_workflowTasks__get
Error Details: 'ApiApi' object has no attribute 'workflows_get_all_tasks'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflowTasks_tests.py", line 33, in test_workflowTasks__get
    WorkflowApi().workflows_get_all_tasks()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_all_tasks'

test this please

*** BUILD #336 ***
Test Name: test_workflowTasks_put
Error Details: 'ApiApi' object has no attribute 'workflows_get_all_tasks'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflowTasks_tests.py", line 41, in test_workflowTasks_put
    WorkflowApi().workflows_get_all_tasks()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_all_tasks'

Test Name: test_node_workflows_post
Error Details: No JSON object could be decoded
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 306, in test_node_workflows_post
    timeout = self.__post_workflow(id,'Graph.Discovery',{})
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 93, in __post_workflow
    status = self.__get_workflow_status(id)
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 86, in __get_workflow_status
    data = self.__get_data()
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/nodes_tests.py", line 80, in __get_data
    return loads(self.__client.last_response.data)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Test Name: test_workflows_get
Error Details: 'ApiApi' object has no attribute 'workflows_get'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 57, in test_workflows_get
    Api().workflows_get()
AttributeError: 'ApiApi' object has no attribute 'workflows_get'

Test Name: test_workflows_post
Error Details: 'ApiApi' object has no attribute 'workflows_post'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 65, in test_workflows_post
    Api().workflows_post(body={"name": 'Graph.noop-example'})
AttributeError: 'ApiApi' object has no attribute 'workflows_post'

Test Name: test_workflows_graphs_get
Error Details: 'ApiApi' object has no attribute 'workflows_get_graphs'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 95, in test_workflows_graphs_get
    Api().workflows_get_graphs()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_graphs'

Test Name: test_workflows_graphs_put
Error Details: 'ApiApi' object has no attribute 'workflows_get_graphs_by_name'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 105, in test_workflows_graphs_put
    Api().workflows_get_graphs_by_name('*')
AttributeError: 'ApiApi' object has no attribute 'workflows_get_graphs_by_name'

Test Name: test_workflowTasks__get
Error Details: 'ApiApi' object has no attribute 'workflows_get_all_tasks'
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/usr/local/lib/python2.7/dist-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/usr/local/lib/python2.7/dist-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflowTasks_tests.py", line 33, in test_workflowTasks__get
    WorkflowApi().workflows_get_all_tasks()
AttributeError: 'ApiApi' object has no attribute 'workflows_get_all_tasks'

@dalebremner @brianparry @geoff-reid are new client libraries required?  Has pypi been updated?
Brian should have submitted a PR for:
Test Name: test_node_workflows_post
Error Details: No JSON object could be decoded

@jlongever I created a new client library and posted it on pypi.  @brianparry then updated the library on the rackhdci server, does he also need to up date the new jenkins slave nodes?

@geoff-reid each job instance should create a new virtualenv and reinstall the libs. Shouldn't need to manually install them.

@geoff-reid Is 1.0.2 sound right?
Downloading/unpacking on-http-api2-0>=1.0.0 (from -r build/test/requirements.txt (line 10))
  Downloading on_http_api2_0-1.0.2.tar.gz
  Running setup.py (path:/tmp/.venv/build/on-http-api2-0/setup.py) egg_info for package on-http-api2-0

@jlongever Yes, 1.0.2 is the new library.

https://github.com/RackHD/RackHD/pull/163 is merged, so test this please

:+1:

+1

@brianparry your comment was addressed with the latest commit

*** BUILD #357 ***
Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

:+1:

test this please

*** BUILD #358 ***
Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

Test Name: test_node_workflows_post
Error Details: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Content-Length': '128', 'X-Powered-By': 'Express', 'Connection': 'keep-alive', 'ETag': 'W/"80-7OjUGBy4o6RiaRnKGDICnw"', 'Date': 'Thu, 07 Apr 2016 17:14:08 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=utf-8'})
HTTP response body: {"message":"BadRequestError: required option user for task Task.Obm.Ipmi.CreateSettings in graph Graph.Obm.Ipmi.CreateSettings"}

-------------------- >> begin captured logging << --------------------
tests.api.v2_0.workflows_tests: INFO: starting amqp listener for node 5706941d0aff1af20711a5cb
amqp: DEBUG: Start from server, version: 0.9, properties: {u'information': u'Licensed under the MPL.  See http://www.rabbitmq.com/', u'product': u'RabbitMQ', u'copyright': u'Copyright (C) 2007-2013 GoPivotal, Inc.', u'capabilities': {u'exchange_exchange_bindings': True, u'connection.blocked': True, u'authentication_failure_close': True, u'basic.nack': True, u'consumer_priorities': True, u'consumer_cancel_notify': True, u'publisher_confirms': True}, u'platform': u'Erlang/OTP', u'version': u'3.2.4'}, mechanisms: [u'AMQPLAIN', u'PLAIN'], locales: [u'en_US']
amqp: DEBUG: Open OK!
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 189, in test_node_workflows_post
    Api().nodes_post_workflow_by_id(id, name='Graph.noop-example', body={})
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/apis/api_api.py", line 2515, in nodes_post_workflow_by_id
    callback=params.get('callback'))
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 322, in call_api
    response_type, auth_settings, callback)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 149, in __call_api
    post_params=post_params, body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 358, in request
    body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/rest.py", line 208, in POST
    body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/rest.py", line 177, in request
    raise ApiException(http_resp=r)
'(400)\nReason: Bad Request\nHTTP response headers: HTTPHeaderDict({\'Content-Length\': \'128\', \'X-Powered-By\': \'Express\', \'Connection\': \'keep-alive\', \'ETag\': \'W/"80-7OjUGBy4o6RiaRnKGDICnw"\', \'Date\': \'Thu, 07 Apr 2016 17:14:08 GMT\', \'Access-Control-Allow-Origin\': \'*\', \'Content-Type\': \'application/json; charset=utf-8\'})\nHTTP response body: {"message":"BadRequestError: required option user for task Task.Obm.Ipmi.CreateSettings in graph Graph.Obm.Ipmi.CreateSettings"}\n\n-------------------- >> begin captured logging << --------------------\ntests.api.v2_0.workflows_tests: INFO: starting amqp listener for node 5706941d0aff1af20711a5cb\namqp: DEBUG: Start from server, version: 0.9, properties: {u\'information\': u\'Licensed under the MPL.  See http://www.rabbitmq.com/\', u\'product\': u\'RabbitMQ\', u\'copyright\': u\'Copyright (C) 2007-2013 GoPivotal, Inc.\', u\'capabilities\': {u\'exchange_exchange_bindings\': True, u\'connection.blocked\': True, u\'authentication_failure_close\': True, u\'basic.nack\': True, u\'consumer_priorities\': True, u\'consumer_cancel_notify\': True, u\'publisher_confirms\': True}, u\'platform\': u\'Erlang/OTP\', u\'version\': u\'3.2.4\'}, mechanisms: [u\'AMQPLAIN\', u\'PLAIN\'], locales: [u\'en_US\']\namqp: DEBUG: Open OK!\n--------------------- >> end captured logging << ---------------------'

test this please

*** BUILD #359 ***
Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

Test this please

*** BUILD #360 ***
Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

test this please

*** BUILD #361 ***
Test Name: test_node_workflows_del_active
Error Details: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Length': '55', 'X-Powered-By': 'Express', 'Connection': 'keep-alive', 'ETag': 'W/"37-R7XALndHNrZJ0kRW8fTl7w"', 'Date': 'Fri, 08 Apr 2016 00:22:29 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=utf-8'})
HTTP response body: {"message":"Failed to cancel 5706f9c3091bf13c652d6e65"}

-------------------- >> begin captured logging << --------------------
urllib3.connectionpool: WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', BadStatusLine("''",))': /api/1.1/nodes
urllib3.connectionpool: INFO: Starting new HTTP connection (11): localhost
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v1_1/nodes_tests.py", line 376, in test_node_workflows_del_active
    raise e
'(500)\nReason: Internal Server Error\nHTTP response headers: HTTPHeaderDict({\'Content-Length\': \'55\', \'X-Powered-By\': \'Express\', \'Connection\': \'keep-alive\', \'ETag\': \'W/"37-R7XALndHNrZJ0kRW8fTl7w"\', \'Date\': \'Fri, 08 Apr 2016 00:22:29 GMT\', \'Access-Control-Allow-Origin\': \'*\', \'Content-Type\': \'application/json; charset=utf-8\'})\nHTTP response body: {"message":"Failed to cancel 5706f9c3091bf13c652d6e65"}\n\n-------------------- >> begin captured logging << --------------------\nurllib3.connectionpool: WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by \'ProtocolError(\'Connection aborted.\', BadStatusLine("\'\'",))\': /api/1.1/nodes\nurllib3.connectionpool: INFO: Starting new HTTP connection (11): localhost\n--------------------- >> end captured logging << ---------------------'

Test Name: pollers_data_get
Error Details: Condition was True.
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/pollers_tests.py", line 157, in pollers_data_get
    assert_false(poller.get('lastFinished', False))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 67, in assert_false
    raise ASSERTION_ERROR(message)
AssertionError: Condition was True.

Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

@dalebremner Tests seem to be failing in the same way consistently.

*** BUILD #364 ***
Test Name: test_node_workflows_del_active
Error Details: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Length': '55', 'X-Powered-By': 'Express', 'Connection': 'keep-alive', 'ETag': 'W/"37-D5ab+tclfjlJ+boi66Ettw"', 'Date': 'Fri, 08 Apr 2016 15:15:02 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=utf-8'})
HTTP response body: {"message":"Failed to cancel 5707caf37322572a9288f3d4"}

-------------------- >> begin captured logging << --------------------
urllib3.connectionpool: WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', BadStatusLine("''",))': /api/1.1/nodes
urllib3.connectionpool: INFO: Starting new HTTP connection (11): localhost
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v1_1/nodes_tests.py", line 376, in test_node_workflows_del_active
    raise e
'(500)\nReason: Internal Server Error\nHTTP response headers: HTTPHeaderDict({\'Content-Length\': \'55\', \'X-Powered-By\': \'Express\', \'Connection\': \'keep-alive\', \'ETag\': \'W/"37-D5ab+tclfjlJ+boi66Ettw"\', \'Date\': \'Fri, 08 Apr 2016 15:15:02 GMT\', \'Access-Control-Allow-Origin\': \'*\', \'Content-Type\': \'application/json; charset=utf-8\'})\nHTTP response body: {"message":"Failed to cancel 5707caf37322572a9288f3d4"}\n\n-------------------- >> begin captured logging << --------------------\nurllib3.connectionpool: WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by \'ProtocolError(\'Connection aborted.\', BadStatusLine("\'\'",))\': /api/1.1/nodes\nurllib3.connectionpool: INFO: Starting new HTTP connection (11): localhost\n--------------------- >> end captured logging << ---------------------'

Test Name: test_workflowTasks_put
Error Details: Shell commands != fn_1
-------------------- >> begin captured logging << --------------------
tests.api.v1_1.workflowTasks_tests: INFO: Adding workflow task:
tests.api.v1_1.workflowTasks_tests: INFO: {
    "friendlyName": "fn_1",
    "implementsTask": "im_1",
    "injectableName": "in_1",
    "options": {},
    "properties": {}
}
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v1_1/workflowTasks_tests.py", line 88, in test_workflowTasks_put
    assert_equal(readFriendlyName,self.workflowTaskDict.get('friendlyName'))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
'Shell commands != fn_1\n-------------------- >> begin captured logging << --------------------\ntests.api.v1_1.workflowTasks_tests: INFO: Adding workflow task: \ntests.api.v1_1.workflowTasks_tests: INFO: {\n    "friendlyName": "fn_1",\n    "implementsTask": "im_1",\n    "injectableName": "in_1",\n    "options": {},\n    "properties": {}\n}\n--------------------- >> end captured logging << ---------------------'

Test Name: pollers_data_get
Error Details: Condition was True.
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/pollers_tests.py", line 157, in pollers_data_get
    assert_false(poller.get('lastFinished', False))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 67, in assert_false
    raise ASSERTION_ERROR(message)
AssertionError: Condition was True.

Test Name: test_workflows_graphs_delete
Error Details: Shell Commands Hwtest_2 != Shell Commands Hwtest_1
Stack Trace: Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 165, in test_workflows_graphs_delete
    assert_equal(self.workflowDict2.get('friendlyName'), str(rawj[0].get('friendlyName')))
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/asserts.py", line 55, in assert_equal
    raise ASSERTION_ERROR(message)
AssertionError: Shell Commands Hwtest_2 != Shell Commands Hwtest_1

*** BUILD #368 ***
Test Name: test_node_workflows_post
Error Details: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Content-Length': '128', 'X-Powered-By': 'Express', 'Connection': 'keep-alive', 'ETag': 'W/"80-7OjUGBy4o6RiaRnKGDICnw"', 'Date': 'Fri, 08 Apr 2016 20:51:24 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json; charset=utf-8'})
HTTP response body: {"message":"BadRequestError: required option user for task Task.Obm.Ipmi.CreateSettings in graph Graph.Obm.Ipmi.CreateSettings"}

-------------------- >> begin captured logging << --------------------
tests.api.v2_0.workflows_tests: INFO: starting amqp listener for node 57081893f8da11d007338745
amqp: DEBUG: Start from server, version: 0.9, properties: {u'information': u'Licensed under the MPL.  See http://www.rabbitmq.com/', u'product': u'RabbitMQ', u'copyright': u'Copyright (C) 2007-2013 GoPivotal, Inc.', u'capabilities': {u'exchange_exchange_bindings': True, u'connection.blocked': True, u'authentication_failure_close': True, u'basic.nack': True, u'consumer_priorities': True, u'consumer_cancel_notify': True, u'publisher_confirms': True}, u'platform': u'Erlang/OTP', u'version': u'3.2.4'}, mechanisms: [u'AMQPLAIN', u'PLAIN'], locales: [u'en_US']
amqp: DEBUG: Open OK!
--------------------- >> end captured logging << ---------------------
Stack Trace:   File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/usr/lib/python2.7/unittest/case.py", line 1043, in runTest
    self._testFunc()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 296, in testng_method_mistake_capture_func
    compatability.capture_type_error(s_func)
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/compatability/exceptions_2_6.py", line 27, in capture_type_error
    func()
  File "/tmp/.venv/local/lib/python2.7/site-packages/proboscis/case.py", line 350, in func
    func(test_case.state.get_state())
  File "/home/jenkins/workspace/RackHD/build/test/tests/api/v2_0/workflows_tests.py", line 189, in test_node_workflows_post
    Api().nodes_post_workflow_by_id(id, name='Graph.noop-example', body={})
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/apis/api_api.py", line 2594, in nodes_post_workflow_by_id
    callback=params.get('callback'))
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 322, in call_api
    response_type, auth_settings, callback)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 149, in __call_api
    post_params=post_params, body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/api_client.py", line 358, in request
    body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/rest.py", line 208, in POST
    body=body)
  File "/tmp/.venv/local/lib/python2.7/site-packages/on_http_api2_0/rest.py", line 177, in request
    raise ApiException(http_resp=r)
'(400)\nReason: Bad Request\nHTTP response headers: HTTPHeaderDict({\'Content-Length\': \'128\', \'X-Powered-By\': \'Express\', \'Connection\': \'keep-alive\', \'ETag\': \'W/"80-7OjUGBy4o6RiaRnKGDICnw"\', \'Date\': \'Fri, 08 Apr 2016 20:51:24 GMT\', \'Access-Control-Allow-Origin\': \'*\', \'Content-Type\': \'application/json; charset=utf-8\'})\nHTTP response body: {"message":"BadRequestError: required option user for task Task.Obm.Ipmi.CreateSettings in graph Graph.Obm.Ipmi.CreateSettings"}\n\n-------------------- >> begin captured logging << --------------------\ntests.api.v2_0.workflows_tests: INFO: starting amqp listener for node 57081893f8da11d007338745\namqp: DEBUG: Start from server, version: 0.9, properties: {u\'information\': u\'Licensed under the MPL.  See http://www.rabbitmq.com/\', u\'product\': u\'RabbitMQ\', u\'copyright\': u\'Copyright (C) 2007-2013 GoPivotal, Inc.\', u\'capabilities\': {u\'exchange_exchange_bindings\': True, u\'connection.blocked\': True, u\'authentication_failure_close\': True, u\'basic.nack\': True, u\'consumer_priorities\': True, u\'consumer_cancel_notify\': True, u\'publisher_confirms\': True}, u\'platform\': u\'Erlang/OTP\', u\'version\': u\'3.2.4\'}, mechanisms: [u\'AMQPLAIN\', u\'PLAIN\'], locales: [u\'en_US\']\namqp: DEBUG: Open OK!\n--------------------- >> end captured logging << ---------------------'


Lengths, angles, etc can only be modified in the code editor

This is a less severe issue because in a sense this is equivalent to the standard side menus MEs deal with.
If we want to go this route, let's maybe make variables more glaringly obvious ?

Are we talking sketch, modeling operations like Extrude, or both? It might help to split those two apart for scope. At the very least I'll try to address both in my UX recommendations.

Yep, pretty much all of it. Constraint asking for length, extrude asking for length, etc.

On the sketch front, #2692 and #2693 will help considerably. It will be more difficult, and needs a separate issue, to outline the behavior for going back and modifying the length, because it may no longer be editable because it is dependent on a constraint in some way.

Oh nice! Yeah when those two issues are resolved we can resolve this one I suppose. If we make it so when a length or angle is hovered over, and the respective variable / value is highlighted, that'd be enough I think.


Bower version does not match npm version

Hi,
Thanks for the module, it looks really good!
Is there a reason why the bower version does not match the npm version ? And more importantly, is there a way to install the package using npm alone ? As I'm using webpack it needs to be able to require the module and I believe it does not work out of the box (probably as the module is trying to parse script tags to find itself in the DOM, in order to find the directive template and the icons from what I understand).
Thanks in advance

Hi wrousseau,
There was not special reason for bower/npm not being in sync on same version, thanks for the input.
Regarding npm, there was no way to install via npm because no-one asked :) , now you can install with 'nam install ng-walkthrough'.


Add Keras model zoo

Added Keras model zoo for MorphNet algorithm, including the TensorFlow implementation, README, and Dockerfile.

@googlebot

@pkch can you please take a look.


Update image proxy documentation

For https://github.com/mattermost/mattermost-server/pull/9967

I've made a few changes to:

Clarify the differences between the local and atmos/camo proxies
Remove some unnecessary details about the local image proxy like that it uses the willnorris/imageproxy and about some features that we didn't actually support.

I re-added Amy for a second editor review in case I messed something up.


DCIPHER - UP Migration - Monitor in Production

[STLT] = DCIPHER
User Story:
As a developer, I want to move the [STLT] settings to production after getting approval from the STLT, so that they can start receiving live data.
Description/Use Case
[STLT] is already receiving data from the covid pipeline they will be onboarded to the UP where they will be receiving data from SimpleReport including Covid, Flu and RSV. We need to make sure the message we generate from the UP passes the STLTs validation. We can use SimpleReport to submit test messages to the STLT.
Risks/Impacts/Considerations
Dev Notes:

[ ] Upload the staging receiver settings to Production
[ ] Copy the receiver's secret key with the new receiver name in Azure's production environment
[ ] Verify we can connect to the newly created receiver
[ ] Monitor the UP data for the conditions the receiver is interesed in and notify them when reports are routed to them
[ ] Send a test message through Simple Report and make sure it gets routed to the STLT
[ ] Send test messages according to the STLT needs

Acceptance Criteria

[ ] Receiver UP settings are pushed to production
[ ] ReportStream can connect to STLT in production
[ ] Notify STLT when reports are routed to them for each condition they are receiving

Checked with Victor, no longer needed as all work was done on another ticket #16388


Disabling caching for testing purposes...

Is there a way to disable caching all together for testing purposes?

I think there is. SDImageCache shouldCacheImagesInMemory should be set to NO to avoid memory caching. For the disk caching, you need to set SDWebImageCacheMemoryOnly as download option for SDWebImageManager downloadImageWithURL:options:progress:completed:. Let me know if this takes care of the caching.


Eliminate trivial underscore

Now, only the overly custom part of underscore-plus remains: this config reading and writing that should rather get a separate module/package.
The implementations themselves could be further improved as better Set operations land, mostly in Node v22.

Gazing through the differences, this PR also seems to build upon #146 - that wasn't intentional but honestly, it's not "wrong enough" for me to try to go back. The content of that has been around for a long enough time, it's not going to change, and I think eventually it should get merged either way...

Here, even if you aren't familiar with underscore-plus you can quickly assume what it's doing based on the function name uniq and can hopefully reasonably guess at what compact is doing.
But if we take what it's changed to in this PR:
// === New Code
return Array.from(new Set(packageNames)).filter(Boolean);

While this code is generally faster by about 0.1ms we've lost the clues at what's going on. Now requiring someone to be familiar enough with JavaScript to know that a Set only allows unique values in each collection.

I suppose we must be very different people because I disagree categorically. Of course the strawman to beat would be compact which I find totally opaque but I cannot think of a scenario when one might think, using any tech stack, that something called a "set" would allow duplicates, and furthermore that taking a list of values, turning it into a set, and then turning it back into an array could serve any other purpose than making the elements unique. I strongly believe this is the reason there isn't any other built-in for this; it's obvious enough and better yet, portable across programming languages and technologies. I would agree that the uniqueness is achieved by unfolding something that seems more like an implementation detail - but that could actually be a plus in a lot of cases and I still don't think it does any significant damage.

I tend to fall more on @2colours’s side of this disagreement, but some short explanatory comments don't seem like they're a hardship here.

Alright, I addressed all the open issues. I think. Also, since the other PR is kinda spoiled and we are already addressing the request async topic here, I will just close that.


Update ember-cli and keen.js, and some new goodies

Hi there!
Here's some updates for the library:

Added a CHANGELOG.md
Added docs to the KeenQueryingService
New .collectionsAll() method to fetch all event collections
New .collection() method to fetch a single event collections
Updated to keen.js 3.4.0
Updated to ember-cli 2.3.0
Spruced up the README

Hi @Ramblurr! Thanks a lot for the work. I actually don't have maintainer access for this organization anymore. When I find the time, I'll point npm to another repo and we can merge it there. Sorry for any inconvenience.

@Ramblurr - Actually, I was just granted access. Will review this soon.

Great, thanks @ksin! Think we can have a release soon?

Done! Thanks again for everything.


Create your team wiki page

Backend Boys Secretary should create a team wiki, listing:
Team number
Team name
Team role
Team members names
Team members Github IDs
Roles of each member.

Currently waiting on GitHub ID's for team members but will mark as complete when I add that in. Otherwise it is done


add wait parameter on helm uninstall

What type of PR is this?
feature
What this PR does / why we need it:
sometimes when a helmrelease is deleting, resources like namespace is still terminating while the deplyer start reconcile and may cause conflict
so wait parameter should work on helm uninstall.

Codecov Report

Merging #628 (137bb4f) into main (e2ffa5f) will decrease coverage by 0.41%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #628      +/-   ##
==========================================
- Coverage   13.60%   13.19%   -0.41%
==========================================
  Files          66       71       +5
  Lines        7492     7799     +307
==========================================
+ Hits         1019     1029      +10
- Misses       6391     6686     +295
- Partials       82       84       +2

see 18 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Hidden header as scrolling down

Description
Once landing in the search results, I can scroll down in the header area to hide it and reveal a white space below the footer. The bug makes openverse look like inserted as an iframe.
Reproduction

Go to openverse.org
Search something and land on the search results
Scroll down within the header area
See the error.

Screenshots
Safari on iOS
https://github.com/WordPress/openverse/assets/895819/18ce9071-a13a-4ab5-82fd-7d9545a4450f
Safar on MacOS
https://github.com/WordPress/openverse/assets/895819/58fc5e34-92ad-4ba8-90b3-5e48bdbf6cdb
Environment

Device: iPhone 12 pro and Macbook pro M1 14-inch
OS: iOS 16.5.1 and Macos Ventura 13.4.1
Browser:

in iOS: Safari and Firefox
in Macbook: Safari and Chrome in all breakpoints. In Firefox the bug is not visible

Additional context
I think it relates to #2596

Fixed as part of #2596, which is deploying to production now.

I no longer see the bug in MacOS. In iOS, is now only visible on Safari.
https://github.com/WordPress/openverse/assets/895819/f807cd4b-d534-4f36-82b3-327d108a829b
Once landing in the search results, I don't see the header and need to scroll up from the screen's far side until it shows up. Then header and results area tend to move together, notice how two scroll bars overlap each other.

This is not reproducible on the iOS simulator, severely limiting our approaches on how to debug and resolve this.


Document architecture and interfaces for the wrapper

Design required classes and interfaces according to SOLID principles and potentially GoF design patterns. Document in GitHub wiki

Superseded by #67


feat(AlertBanner): Parse URL out of alert text and got to url on bann…

…er click
Summary of changes
Asana Ticket: Navigate to linked URL when user clicks banner alert
The main goal here was to change to a desired behavior without changing other existing behavior around the banner.
The alert banners already support navigating to a url on click.  The alert banner data just needed to be parsed differently to put the url in the right location.  Adding the parsed url to the alert banner struct caused the URL to be appended to the banner a second time.  The property url_parsed_out_of_title was added to stop this behavior so that if we parsed a url out of the title it would not render it again.
If a url is set on the data imported for the banner it should do the same behavior as today.

Before getting review, please check the following:

[ ] Does frontend functionality render and work correctly in IE?
[ ] Have we load-tested any new pages or internal API endpoints that will receive significant traffic? See load testing docs
[ ] Are interactive elements accessible to screen readers?
[ ] Have you checked for tech debt you can address in the area you're working in?
[ ] If this change involves routes, does it work correctly with pertinent "unusual" routes such as the combined Green Line, Silver Line, Foxboro commuter rail, and single-direction bus routes like the 170?
[ ] Are the changes organized into self-contained commits with descriptive and well-formatted commit messages?

The linking works when clicking inside c-alert-item__top-text-container but not for the entire banner announcement-container alert-announcement__container. Perhaps the onclick method should be moved. Only seems to be an issue on desktop.

It looks like this only affects the edges of the banner, and isn't a new bug introduced in this pull request.  I would say if it is urgent to get this out the door we merge this and make a new ticket to make the whole banner clickable.  It's going to take me about a day to figure out how to hoist the onclick out of one of the templates.

It looks like this only affects the edges of the banner, and isn't a new bug introduced in this pull request. I would say if it is urgent to get this out the door we merge this and make a new ticket to make the whole banner clickable.

+1 to merging as-is and handling this as a follow-up if this is functioning well otherwise


Layer hidden infobox button is too big

Don't you think @piensaenpixel @urbanphes @josecruz ?
cc @nobuti

In my opinion should be smaller and aligned to the right.

Actually the last design files I have access to are slightly different:

Maybe we should change the button style to a small secondary one and align it to the right.

I feel you can do it with the options of the infobox so \o/

On 14 Sep 2016, at 16:19, María Checa<EMAIL_ADDRESS>wrote:
Actually the last design files I have access to are slightly different:
Maybe we should change the button style to a small secondary one and align it to the right.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Thanks @MariaCheca that's

Not closed yet, buttons design issue is still pending ;)


Invalid next.config.js

Next.js throws a warning about the library's custom next.config.js options:
https://nextjs.org/docs/messages/invalid-next-config

I'm not sure what the alternative is. Perhaps next-image-export-optimizer options could be stored elsewhere?

Hi @psirenny,
Thanks for the issue. I was ignoring this warning so far. I will think about the best place to put the configuration and keep backward compatibility as well.

Hi @psirenny,
I decided to put all the config variables in the environment object. You can check it out in v0.12.1 and refer to the readme for the new naming of the config variables.
It should be backward compatible for everyone that uses the "old" config.
Done it PR #26

Thanks!


Update api-management-get-started.md

Hi, Team.
I've added a note for API Management when importing Swagger 2.0 document, which users should be aware of. Until it is resolved, I would suggest this note should be on the page.
It would be great, if you have a review and accept it.
Cheers,
Justin

Hi @justinyoo, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
We will now validate the agreement and then real humans will evaluate your PR.
TTYL, AZPRBOT;

@steved0x Can you please verify this note Justin wants to add?

@ggailey777 Please merge in this change, I reviewed it with the team and it is correct.
@justinyoo Thank you for the contribution!

@justinyoo Thanks for your contribution to the Azure documentation. We appreciate your help improving the quality of our topics. @steved0x thanks for the quick review too.


[OAuth] auth failed with AADSTS50076 after enabling MFA by using AAD conditional access

Category

[x] Question
[ ] Documentation issue
[ ] Bug

Hi all,
Recently we find out that the OAuth of OneDrive for Business will fail after enabling the MFA.
We are using the endpoint https://login.windows.net/common/oauth2/authorize with the following parameters to OAuth:
display=popup
response_type=code
scope=wl.basic,wl.skydrive,wl.skydrive_update,wl.offline_access
prompt=login
client_id=(our client id)
redirect_uri=(our redirect endpoint)
state=(our state)
With MFA disabled, the OAuth works perfectly with the code redirect to our endpoint and we can obtain the access token by using the code. However, with MFA enabled, we will finally get AADSTS50076 or AADSTS50158 in the end.
The OAuth flow is as followed:

Poppup a window with https://login.windows.net/common/oauth2/authorize endpoint with the parameters above.
Enter the account(email) and click next.
Enter the password and click next.
Redirect the code back to our endpoint
Use the code and send request to https://graph.microsoft.com to obtain the access token.

If the MFA is enabled, we observe that the MFA page did not appear after entering the account and password (step 3 to 4). Instead, we still got the code, and using the code to obtain access token will finally fail at step 5 with certain error code.
According to our test, if the MFA is enabled through AAD conditional access [1], then we will get AADSTS50076. For example,
{"error":"interaction_required","error_description":"AADSTS50079: Due to a configuration change made by your administrator, or because you moved to a new location, you must enroll in multi-factor authentication to access '00000003-0000-0000-c000-000000000000'.\r\nTrace ID: f9a02aa6-9559-48c2-a19d-3c13e9232b00\r\nCorrelation ID: 33a7286c-8180-4e36-a669-89e523b74b51\r\nTimestamp: 2021-12-23 03:00:56Z","error_codes":[50079],"timestamp":"2021-12-23 03:00:56Z","trace_id":"f9a02aa6-9559-48c2-a19d-3c13e9232b00","correlation_id":"33a7286c-8180-4e36-a669-89e523b74b51","error_uri":"https:\/\/login.windows.net\/error?code=50079","suberror":"basic_action","claims":"{\"access_token\":{\"capolids\":{\"essential\":true,\"values\":[\"acb46564-b449-4ac6-9d54-dc44553fdc91\"]}}}"}

If we enforcely enable the MFA policy by specifying the amr_values=ngcmfa in step1, then the MFA page will appear after step 3, and we can finally get the access token successfully.
However, there's another error AADSTS50158 from our customer, even if providing the amr_values=ngcmfa parameter, we still cannot get the access token in the end. In this case, our customer said that they cannot ensure what kind of MFA policy are set because it's done by their IT.
The question is, since not all of our customer enables the MFA policy, we cannot always provide the "amr_values=ngcmfa" workaround in the url, and in some case providing this parameter is even useless.
We would like to know if we can always get the access token successfully with or without MFA enabled.
If there's a known issue, or if our auth flow needs to be adjusted or more parameters should be provided in order to achieve the goal, please advice.
[1] https://docs.microsoft.com/en-us/microsoft-365/admin/security-and-compliance/multi-factor-authentication-microsoft-365?view=o365-worldwide#conditional-access-policies
Thank you!

Hi,
Is there any updates on this issue?
If additional information is required to move on, please let me know :)
Thanks a lot!


can you release your pycocotools code?

pycocotools should be the official coco evaluation code https://github.com/tylin/coco-caption

pycocotools should be the official coco evaluation code
https://github.com/cocodataset/cocoapi/tree/master/PythonAPI

pycocotools should be the official coco evaluation code: https://github.com/cocodataset/cocoapi/tree/master/PythonAPI

Thanks a lot @zjuchenlong，I think I just found an old version of pycocotools.


Make me private

Fix: https://github.com/CartoDB/cartodb-platform/issues/5627
Retuning most of the props only when logged

Trying to explain a bit about @gonzaloriestra  comment:

you will show all your own info
you will see only the public info from another user. Whether you're logged in but seeing another user's info, or you're not logged in


feat(cactus-plugin-ledger-connector-ethereum): add stress test

Return JSON error before checking for Error instance in safeStringifyException
(for cases when custom errror extends Error with toJSON() method)
Move artillery dependency up to the root (since its common tool depdenecy)
Add web3js http/ws provider options to connector.
Make http provider optional (can run on ws web3js provider only)
Don't register async endpoints when WS provider is not available.
Return 400 for invalid responses from ethereum ledger (to distinguish from connector errors)
In docker geth-all-in-one allow overwriting of default options when starting the ledger.
Add artillery stress test scripts

Template config and artillery functions file
Common environment setup file
CLI for running the test environment on a separate machine.
Jest test to run quickly stress test on same machine.

Depends on #2631
Signed-off-by: Michal Bajer<EMAIL_ADDRESS>

Artillery had to be removed earlier because of critical severity dependencies that they did not have a fix.

@petermetz Isn't artillery a dev dependency? Do we have similar requirements for both dev and prod packages or is this issue with artillery really that critical? In the end I can remove jest script and leave the rest (which just generates artillery config), that way we can remove artillery completely.
As for alternative stress test framework to use from now on I'd go with https://github.com/grafana/k6

Artillery had to be removed earlier because of critical severity dependencies that they did not have a fix.

@petermetz Isn't artillery a dev dependency? Do we have similar requirements for both dev and prod packages or is this issue with artillery really that critical? In the end I can remove jest script and leave the rest (which just generates artillery config), that way we can remove artillery package completely.
As for alternative stress test framework to use from now on I'd go with https://github.com/grafana/k6

@outSH Yup, dev dependency indeed, but I was worried that if I mark it false positive in the tool then we'll just forget that it's there and could later add some other package to prod that has the same issue which will not get masked by the earlier false positive. I'm not a 100% sure if this would happen, maybe the scanners are sophisticated enough to catch this kind of problem, but I didn't want to risk it with critical and high severity vulnerabilities (so my policy was so far that high and critical severity needs to be addressed even if they are dev dependencies).
My other fear is that contributors & maintainers still have to install the vulnerable dependencies so them not causing any trouble in production on the servers doesn't mean that you or me couldn't accidentally get compromised by some vulnerability in the dev stack (probably low probability but...)

In the end I can remove jest script and leave the rest (which just generates artillery config), that way we can remove artillery package completely.

Works for me, I'm trying to be as flexible as possible.

As for alternative stress test framework to use from now on I'd go with https://github.com/grafana/k6

This also could work. I'll leave it up to you with the ask that if you go for k6 (which looks like a high quality tool at a first glance) please update the relevant docs and CI scripts , dev container image, etc. so that people won't get hit by the issue that the native code (golang) parts of k6 are not installed and they have no idea what's going wrong because it wasn't listed anywhere in the docs that they should be)
The other thing is to cover at least ubuntu and macOS for the install steps (windows is not working right now anyway)

@petermetz OK, I've:

Removed artillery from depdendency
Updated README on how to run the stress test manually
Added logic for closing watchBlock web3js connection too (similar to work done in previous commits)
Rebased


Add detection for Steam4C2

Some reference to the SDK, such as the developer site or a wikipedia article.
Steam4C2 is a (popular?) plugin for Steam integration into Construct 2 games. See https://www.construct.net/en/forum/scirra-website/asset-store-36/steam4c2-plugins-114191

Construct 2 in now EOL
Author has been MIA since some years
Since the Construct 2 asset store is now offline, nobody can buy the plugin anymore

SteamDB links

https://steamdb.info/app/687260/
https://steamdb.info/app/873200/ (not detectable, in ZIP)
https://steamdb.info/app/1057430/ (dito)
https://steamdb.info/app/960190/ (dito

Possible way to detect it
The following files (or a subset of them) will exist:

File name
Flags
Type
Size

package.nw/Steam4C2-linux32.node

node
165.50 KiB

package.nw/Steam4C2-linux64.node

node
162.90 KiB

package.nw/Steam4C2-osx32.node

node
153.38 KiB

package.nw/Steam4C2-osx64.node

node
166.94 KiB

package.nw/Steam4C2-win32.node

node
255.00 KiB

package.nw/Steam4C2-win64.node

node
314.50 KiB

package.nw/Steam4C2.js

js
1.17 KiB

PS: While looking for more examples, I found some older plugin for the same feature (called greenworks, see https://www.construct.net/en/construct-2/addons/83/greenworks/versions) in some games (https://steamdb.info/app/1066900/, https://steamdb.info/app/1111600/), which might also be worth adding:

File name
Flags
Type
Size

package.nw/greenworks-linux32.node

node
678.26 KiB

package.nw/greenworks-linux64.node

node
565.60 KiB

package.nw/greenworks-osx64.node

node
615.39 KiB

package.nw/greenworks-win32.node

node
927.00 KiB

package.nw/greenworks-win64.node

node
1.19 MiB

package.nw/greenworks.js

js
7.76 KiB

Greenworks is already available, but not sure what to do with Steam4C2 since as you said some of them have it packed in zips

@TobiX i can try making rules for it and then ask someone from maintainers to check how many games it flags idk

@diedyesterdaywashere It seems quite popular to pack Construct games, so that will make detection of any Construct middleware quite unreliable 😢

@TobiX we'll see xd


Teste 3

Fails

:no_entry_sign:
Failed to get the coverage - Error: Could not find the xcresult file

Messages

:book:
These files have changed: .gitignore, FlowersStore.xcodeproj/project.pbxproj, FlowersStore.xcodeproj/xcshareddata/xcschemes/FlowersStore.xcscheme, FlowersStore/AppDelegate.swift, FlowersStore/SceneDelegate.swift, FlowersStore/Scenes/FlowersList/FlowersListView.swift, FlowersStore/Scenes/FlowersList/FlowersListViewController.swift, Podfile, Podfile.lock, XCMetrics/XCMetricsLauncher, XCMetrics/xcmetrics, .github/workflows/danger-swift.yml, .github/workflows/swift.yml, DangerDeps/Dummy.swift, Dangerfile.swift, FlowersStore/Scenes/FlowersList/FlowerItemCell.swift, FlowersStore/Scenes/FlowersList/FlowersListCollectionViewFlowLayout.swift, FlowersStore/Scenes/FlowersList/FlowersListInteractor.swift, FlowersStore/Scenes/FlowersList/FlowersListPresenter.swift, FlowersStore/Scenes/FlowersList/Models/Flower.swift, FlowersStore/Utils/Layout/UIView+Constraints.swift, FlowersStore/Utils/Layout/ViewCode.swift, FlowersStore/Utils/Protocols/ImageDownload.swift, FlowersStore/Utils/Protocols/ImageDownloadProtocol.swift, FlowersStoreTests/FlowersList/FlowerItemCell/FlowerItemCellTests.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Mocks/Flower+Mock.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Spy/FlowerItemCellDelegateSpy.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Spy/ImageDownloadProtocolSpy.swift, FlowersStoreTests/FlowersList/FlowerListViewControllerTests.swift, FlowersStoreTests/FlowersList/FlowersListViewDelegateSpy.swift, FlowersStoreTests/FlowersList/FlowersListViewTests.swift, FlowersStoreTests/FlowersList/Models/FlowerTests.swift, FlowersStoreTests/FlowersList/Stubs/flowers.json, FlowersStoreTests/Mocks/UICollectionViewStub.swift, FlowersStoreTests/TestHelpers/TestHelpers.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodArguments.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodProtocol.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodVoid.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/VerifyMethodArgs.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/VerifyMethodVoid.swift, Gemfile, Gemfile.lock, Package.resolved, Package.swift, Sources/flowers-store/main.swift

  Generated by :no_entry_sign: Danger Swift against b8edfa0417279075ef375db1febd18318eefbfc9

Messages

:book:
Project coverage: 67.82%

:book:
Executed 15 tests, with 0 failures (0 unexpected) in 0.114 (0.210) seconds

:book:
These files have changed: .gitignore, FlowersStore.xcodeproj/project.pbxproj, FlowersStore.xcodeproj/xcshareddata/xcschemes/FlowersStore.xcscheme, FlowersStore/AppDelegate.swift, FlowersStore/SceneDelegate.swift, FlowersStore/Scenes/FlowersList/FlowersListView.swift, FlowersStore/Scenes/FlowersList/FlowersListViewController.swift, Podfile, Podfile.lock, XCMetrics/XCMetricsLauncher, XCMetrics/xcmetrics, .github/workflows/danger-swift.yml, .github/workflows/swift.yml, DangerDeps/Dummy.swift, Dangerfile.swift, FlowersStore/Scenes/FlowersList/FlowerItemCell.swift, FlowersStore/Scenes/FlowersList/FlowersListCollectionViewFlowLayout.swift, FlowersStore/Scenes/FlowersList/FlowersListInteractor.swift, FlowersStore/Scenes/FlowersList/FlowersListPresenter.swift, FlowersStore/Scenes/FlowersList/Models/Flower.swift, FlowersStore/Utils/Layout/UIView+Constraints.swift, FlowersStore/Utils/Layout/ViewCode.swift, FlowersStore/Utils/Protocols/ImageDownload.swift, FlowersStore/Utils/Protocols/ImageDownloadProtocol.swift, FlowersStoreTests/FlowersList/FlowerItemCell/FlowerItemCellTests.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Mocks/Flower+Mock.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Spy/FlowerItemCellDelegateSpy.swift, FlowersStoreTests/FlowersList/FlowerItemCell/Spy/ImageDownloadProtocolSpy.swift, FlowersStoreTests/FlowersList/FlowerListViewControllerTests.swift, FlowersStoreTests/FlowersList/FlowersListViewDelegateSpy.swift, FlowersStoreTests/FlowersList/FlowersListViewTests.swift, FlowersStoreTests/FlowersList/Models/FlowerTests.swift, FlowersStoreTests/FlowersList/Stubs/flowers.json, FlowersStoreTests/Mocks/UICollectionViewStub.swift, FlowersStoreTests/TestHelpers/TestHelpers.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodArguments.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodProtocol.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/ManagerVerifyMethodVoid.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/VerifyMethodArgs.swift, FlowersStoreTests/TestHelpers/VerifyMethodWrapper/VerifyMethodVoid.swift, Gemfile, Gemfile.lock, Package.resolved, Package.swift, Sources/flowers-store/main.swift, result.json

FlowersStore.app: Coverage: 62.19

File
Coverage

UICollectionViewStub.swift
100.0%
✅

FlowersListViewController.swift
53.33%
⚠

FlowerItemCell.swift
94.67%
✅

UIView+Constraints.swift
44.83%
⚠

FlowersListCollectionViewFlowLayout.swift
85.71%
⚠

ImageDownload.swift
100.0%
✅

SceneDelegate.swift
55.88%
⚠

FlowersListView.swift
79.17%
⚠

FlowersListInteractor.swift
0.0%
⚠

AppDelegate.swift
66.67%
⚠

FlowersListPresenter.swift
25.0%
⚠

ViewCode.swift
83.33%
⚠

  Generated by :no_entry_sign: Danger Swift against de181b4592e961e77007a97f284f01a4f4204031

Fails

:no_entry_sign:
The operation couldn’t be completed. (DangerSwiftPeriphery.CommandError error 1.)

  Generated by :no_entry_sign: Danger Swift against a1c724f0d32aeaa26f6da94b22be7d90bb487e1e


IDynamicMetaObjectProvider not recognized by SuperSimpleViewEngine

The SuperSimpleViewEngine is supposed to work with dynamic data implementing IDynamicMetaObjectProvider.
Here's how I create an object implementing this interface:
dynamic vm = Newtonsoft.Json.JsonConvert.DeserializeObject("{\"Name\":\"Mary\"}");
if ((vm is IDynamicMetaObjectProvider))
{
	Console.WriteLine ("is IDynamicMetaObjectProvider");
}

The message gets printed, the view model implements the interface.
However, when I pass it to a SuperSimpleViewEngine view (return View["myview.html", vm]) it does not get rendered.
First I thought, Json.NET does not implement any of the interfaces on its dynamic results. But as is shown above, it does.
Then I checked the source code of the SuperSimpleViewEngine and found this:
private static Tuple<bool, object> GetPropertyValue(object model, string propertyName)
{
    ...
    if (model is IDictionary<string, object>)
    {
         return DynamicDictionaryPropertyEvaluator(model, propertyName);
    }
    if (!(model is IDynamicMetaObjectProvider))
    {
        return StandardTypePropertyEvaluator(model, propertyName);
    }
    ...

This to me means: If a view model implements IDynamicMetaObjectProvider then it is not accepted by the view engine.
In fact this means, any other interface than IDictionary<string, object> is treated the same - except the IDynamicMetaObjectProvider interface. Especially DynamicDictionaryValue and DynamicObject - which get checked - later, will not be treated properly (unless the object also implements IDynamicMetaObjectProvider).
This looks strange if not wrong.
Could anyone please check?

Just weighing in as a fellow user.
Looks to me like you are correct and this line should be IDynamicMetaObjectProvider instead of DynamicObject.
if (model is DynamicObject) //should be IDynamicMetaObjectProvider right?
{
    return GetDynamicMember(model, propertyName);
}

Part of the problem may be from the fact that JObject inherits the interface IDynamicMetaObjectProvider two levels deep in JToken.
public abstract class JToken : IJEnumerable<JToken>, IEnumerable<JToken>,
    IEnumerable, IJsonLineInfo, ICloneable, IDynamicMetaObjectProvider

Implements IDynamicMetaObjectProvider
with this implementation:
protected virtual DynamicMetaObject GetMetaObject(Expression parameter)
{
    return new DynamicProxyMetaObject<JToken>(parameter, this,
        new DynamicProxy<JToken>(), true);
}

and is inherited by
public abstract class JContainer : JToken, IList<JToken>, ICollection<JToken>,
    IEnumerable<JToken>, IEnumerable, ITypedList, IBindingList, IList,
    ICollection, INotifyCollectionChanged

which is finally inherited by
public class JObject : JContainer, IDictionary<string, JToken>,
    ICollection<KeyValuePair<string, JToken>>, IEnumerable<KeyValuePair<string, JToken>>,
    IEnumerable, INotifyPropertyChanged, ICustomTypeDescriptor, INotifyPropertyChanging

The documentation on types is abysmal, but the assembly doesn't lie.
However that does show that Nancy should at least attempt resolution (though my guess is that the implementation of JToken won't play nice).

The is operator doesn't care about inheritance.
Also looking at your code, from my experience of combing reflection with dynamic, not caching the callsite in GetDynamicMember will give you garbage performance.
        private static Tuple<bool, object> GetDynamicMember(object obj, string memberName)
        {
            var binder = Microsoft.CSharp.RuntimeBinder.Binder.GetMember(CSharpBinderFlags.None, memberName, obj.GetType(),
                new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) });
            var callsite = CallSite<Func<CallSite, object, object>>.Create(binder);
            var result = callsite.Target(callsite, obj);
            return result == null ? new Tuple<bool, object>(false, null) : new Tuple<bool, object>(true, result);
        }


Fix Parquet version mismatch between Iceberg and Presto

Presto comes with an uber-jar containing the Parquet classes (Parquet 1.12.0 for Presto 0.281, 1.13.1 for newer Presto versions). Iceberg however expects Parquet 1.14.x. This leads to an incompatible combination of Parquet classes on the classpath, which breaks NesQuEIT's Presto tests.
The duplicate classes are in com.facebook.presto.hive:hive-apache. Just exluding that module doesn't immediately help, because it contains more classes, which are required by Presto. Better wait until there's a Presto release that supports recent Iceberg/Parquet.
This workaround disabled the Preto tests for current in-development Iceberg versions.

Note: Example failure in Nessie's CI


Added reources for Flask framework in  programming.md

{Added a blog on flask framework}
{Few months back trying to learn Flask but most of the tutorials I feel are not beginner-friendly then by I come across this tutorial which is very good and made learning interested and practical. Covers all the topic right from using Database with Flask and deploying it on Heroku}

By submitting this pull request I confirm I've read and complied with the below requirements.
Failure to properly do so will just result in the pull request being closed and everyone's time wasted.

[x] I have read the Contribution guidelines and made sure my pull request follows it, specifically the part about promotions and markdown format.
[x] Any resources I am adding in this PR have been used by me and I can personally vouch for their quality.
[x] This pull request has a descriptive title. For example, Add [Resource Name] or Add [Topic Name], not Added new entries or update.
[x] I have double checked that I have only updated the minimum files that are required by this PR.

@PragatiVerma18  Have a look.

@PragatiVerma18  please review.


Telemetry Arduino and CLI

Here is the detail of my work:
Loading the Telemetry library into the directory: /Root/Arduino/libraries/Telemetry
Editing the test.ino program (see the attached file)
Upload to the Teensy 3.2 microcontroller
Correct firmware execution by the Teensy 3.2 microcontroller
Cloning of pytelemetry command line interface
Python Version 2.7.12
The question: how to use the CLI?

Here is the detail of my work:
Loading the Telemetry library into the directory: /Root/Arduino/libraries/Telemetry
Editing the test.ino program (see the attached file)
Upload to the Teensy 3.2 microcontroller
Correct firmware execution by the Teensy 3.2 microcontroller
Cloning of pytelemetry command line interface
Python Version 2.7.12
The question: how to use the CLI?
test.ino
#include <Telemetry.h>
int32_t i;
const int led_pin_v = 13;//Led verte
void setup() {
Serial.begin(9600); // Do not forget to initialize serial
i = 0;
delay(1000);
pinMode(led_pin_v, OUTPUT);
}
void loop() {
// Send counter value under topic foo
Telemetry.pub_i32("foo", i);
digitalWrite(led_pin_v, HIGH);
delay(1000);
digitalWrite(led_pin_v, LOW);
delay(1000);
i++;
}

The README is pretty self-explanatory regarding installing and using the command line to read values from the device.
If you have a more specific issue (such as a bug), feel free to open another ticket. Please do not open tickets for general-purpose questions such as this one. Be specific.


Update plugin updater to use blocks and better background thread management

Fixes a crash where some NSView updates were done on the background thread
Removes a lot of the NSNotification calling
Reduces/removes some obsolete code

The code changes look pretty big and scary, but ultimately all I did was:
Switched to using the new async NSURLSession instead of the synchronous NSURLConnection to make HTTP requests. This in turn meant that I had to pass completionHandler blocks around to know what to do once the request had completed.
The plugin code is really messy/complicated. I tried to tidy it up and remove calls to delegates etc. - blocks are much cleaner

Fixes #2668

Should this be in 2.0.0 since it causes crashes pretty consistently?

Yes and no. I'd say it's fairly high priority, but I don't want it to delay 2.0.0. I'm almost thinking 2.1.0 would come out a few just a few weeks after 2.0.0. We'll put 2.0 out there, wait for some feedback for 1-2 weeks, make any changes then release 2.1.0

lgtm, and I used a test build that included these changes to grab my updated Clipboard plug-in.


New version voidtools.Everything.Alpha version <IP_ADDRESS>2a

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @mrjcap,

This PR's version number voidtools.Everything.Alpha <IP_ADDRESS>2a has 6 parameters (sets of numbers between dots - major, minor, etc), which is greater than the current manifest's version <IP_ADDRESS>1a, which has 4 parameters.

Does this PR's version number exactly match the version reported in the Apps & features Settings page? (Feel free to attach a screenshot.)
(Automated response - build 876)


[Bug] Content length is always reset to 0 when WebDAV file is updated in v1.4.0.

This is caused by the implementation of below link.
https://github.com/personium/io/blob/master/core/src/main/java/com/fujitsu/dc/core/model/impl/fs/DavCmpFsImpl.java#L613

This issue will be fixed in next version (v1.4.1).


[Launcher]: Support LAUNCHER_OPTS

Coverage increased (+32.4%) to 84.274% when pulling 1c9ea926780ebf21b75ffff0ecb0144d4d115465 on yqwang/launcher-dev into 12d9e06b8c9d39e56d22c1e728c2485f1b928e51 on master.

Coverage increased (+32.4%) to 84.274% when pulling 1c9ea926780ebf21b75ffff0ecb0144d4d115465 on yqwang/launcher-dev into 12d9e06b8c9d39e56d22c1e728c2485f1b928e51 on master.


PathFollow2D gets set to 0  when unit_offset is set to 1

Operating system or device - Godot version:
Arch Linux 64 - 2.1.2
Issue description:
When animating the unit_offset of a PathFollow2D, the follower always jumps back to position 0 when reaching a key with position 1. The value is shown correctly, however. It doesn't seem to happen with other properties that have a range from 0 to 1 (like opacity) so it seems to be a PathFollow2D issue.
It actually  always happens when the unit_offset is set to 1, by animation or not.
Steps to reproduce:
Make a PAth2D. Make a PathFollow2D as a child. Draw path.
Make an animation player. Make a key for unit_offset of PathFollow2D. Set it to 0. Make another one, set it to 1. Start the animation and look at the follower.

Setting the offset on the curve's baked length returns to the start too.
And up to 0.99999 unit works fine, then starts rotating before looping.

Also reproduced in Godot 3.1 Alpha 4
I animate using Tween, tweening the PathFollow3D unit_offset from 0 to 1.
Tho it is a PathFollow 3D, should I make a new issue?

The easiest workaround is just setting loop to false.


Allow step-level decorators to be applied at the flow level

Would be useful to be able to apply @environment or @batch or @kubernetes at the flow level. The strawman proposal is that semantics would be simply as if they were applied to each step, equivalent to --with. It is not always ideal, but arguably easiest to explain.

It would be helpful to assign some flow level environment variables such as PIP_INDEX_URL, logger API key, etc


#1233 Failing tests fixes

Description
Updated helm chart installation test to use actual nginx version.
Updated GCP test to not run instances on regions that don't support f1-micro instances.
Fixes #1233.

TODOs
Read the Gruntwork contribution guidelines.

[x] Update the docs.
[x] Run the relevant tests successfully, including pre-commit checks.
[x] Ensure any 3rd party code adheres with our license policy or delete this line if its not applicable.
[x] Include release notes. If this PR is backward incompatible, include a migration guide.

Release Notes (draft)
N/A
Migration Guide
N/A

GCP tests:

Helm tests:


Error in "cargo run" on windows

Occasionally, "cargo run" will fail. It tries to run the executable even though it doesn't exist:
C:\Users\Nathan\Dropbox\code\in-progress\rustvoxel>C:\cargo\bin\cargo run --release --verbose
       Fresh toml v0.1.2 (https://github.com/alexcrichton/toml-rs#1e35b001)
       Fresh rest_easy v0.0.1 (https://github.com/cmr/rest_easy#b648459e)
       Fresh openal-rs v0.0.1 (https://github.com/bjz/openal-rs/#72686f84)
       Fresh freetype-rs v0.0.0 (https://github.com/PistonDevelopers/freetype-rs#3f014f4a)
       Fresh sndfile v0.0.1 (https://github.com/jeremyletang/rust-sndfile#9a083d4a)
       Fresh image v0.2.0-alpha.2 (https://github.com/PistonDevelopers/rust-image#58ace47e)
       Fresh rust-xml v0.1.2-pre (https://github.com/netvl/rust-xml#2d9df326)
       Fresh gl_common v0.0.1 (https://github.com/bjz/gl-rs#157de977)
       Fresh semver v0.1.3 (https://github.com/rust-lang/semver#29212953)
       Fresh khronos_api v0.0.2 (https://github.com/bjz/gl-rs#157de977)
       Fresh glfw v0.0.1 (https://github.com/bjz/glfw-rs.git#a9fdda1e)
       Fresh gl_generator v0.0.1 (https://github.com/bjz/gl-rs#157de977)
       Fresh gl v0.0.1 (https://github.com/bjz/gl-rs#157de977)
       Fresh rustvoxel v0.0.1 (file:///C:/Users/Nathan/Dropbox/code/in-progress/rustvoxel)
     Running `target\release\voxelgame`
An unknown error occurred
Could not execute process `target\release\voxelgame` (status=never executed)

Caused by:
  file not found (OS Error 2: The system cannot find the file specified.
)

This is on Windows 7, 64-bit Rust, rustc 0.13.0-nightly (395901393 2014-11-24 00:46:30 +0000), cargo 0.0.1-pre-nightly (e1dc4bc 2014-11-25 21:59:15 +0000).
One way to reproduce this is to press ctrl-c before "cargo run" is finished with compilation, and then run the same command again. I'm not sure if it happens at any other time; it might, but I can't reproduce it. Even if it turns out that it only happens when you press ctrl-c, it's still a problem because sometimes it's convenient to interrupt compilation, and it shouldn't cause cargo to get into an inconsistent state.
This problem didn't happen with cargo 0.0.1-pre-nightly (603f29d 2014-11-01 19:29:48 +0000).

I haven't seen this recently, so I'm going to close assuming that #1021 fixed it, but please feel free to reopen if you see it again!


Creating hero card dynamically and showing it as carousel using Composer

I am unable to understand or having no clue on how to create hero cards dynamically and show it as carousel. Can anyone tell me how to do it?

@Mrinnaal you can create a bot from RespondingWithCardsSample.
Basiclly, you can use LG to generate a carousel as following:
AllCards
[Activity
Attachments = ${HeroCard()} | ${ThumbnailCard()} | ${SigninCard()} | ${AnimationCard()} | ${VideoCard()} | ${AudioCard()} | ${json(adaptivecardjson())}
AttachmentLayout = carousel}
]

Yes! But dynamically i want to add the elements to the attachments variable. This will work, if we already have a static card in place. How to run a loop kind of thing, so that i can add those elements to attachments. Kindly help me on this. And, if you could provide a sample it would be really great.

hi @Mrinnaal Maybe I can provide a simple solution to see whether it can solve your issue.
> Suppose there is such data in memory: dataList
> [
>    {"title": "xxx1", "subTitle": "yyy1", "text": "zzz1", "buttons": ["a1", "b1"]},
>    {"title": "xxx2", "subTitle": "yyy2", "text": "zzz2", "buttons": ["a2", "b2"]}
> ]

# herocardsActivity(dataList)
[Activity
    Attachments = ${heroCards(dataList)}
    AttachmentLayout = carousel
]

# heroCards(dataList)
- ${foreach(dataList, x, herocardTemplate(x.title, x.subTitle, x.text, x.buttons))}

# herocardTemplate(title, subTitle, text, buttons)
[HeroCard
        title=${coalesce(title, "")}
        subtitle=${coalesce(subTitle, "")}
        text=${coalesce(text, "")}
        buttons=${coalesce(buttons, [])}
]

@Danieladu bro! you are the hero 🥇 thank you so much! Was expecting this only!!

Hello there, when you suggest to have a datalist, where should create it? in the common file?, can I use a list of images to create a carousel rather than a addaptative card with json?

hi @stevgarcia

when you suggest to have a datalist, where should create it? in the common file?

There are many ways to define/create the data. From Composer actions(like serProperties, HttpRequest, EditArray, SetProperties .etc.), Composer input(TextInput, ChoiceInput, Ask .etc.), Recognizers, or directly define in LG file, or in some json file and import by LG's function 'fromFile'. Define in common file is also ok.

can I use a list of images to create a carousel rather than a addaptative card with json?

Yes, you can.
Try the code below:
> Suppose there is such data in memory: images
> ["http://1.jpg","http://2.jpg","http://3.jpg" ]

# herocardsActivity(images)
[Activity
    Attachments = ${heroCards(images)}
    AttachmentLayout = carousel
]

# heroCards(images)
- ${foreach(images, image, herocardTemplate(image))}

# herocardTemplate(image)
[HeroCard
        images=${image}
]

thanks for your answer, I tried something like this:

and I put this code in the common file, I´m using images from internet for test purpose:
images
-```
{
["https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSvGsxX6UfYEAkmgkIKhNDcHA8uCKLvS1Q2zg&usqp=CAU",
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQBGR6d-lNhZHPU6jebJVm7DmMK69vgtZZzbQ&usqp=CAU",
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRImeU7_FXyp3bxAOcMw5bzlElk_UVEhZjuvw&usqp=CAU" ]
}
```
heroCards(images)

${foreach(images, image, herocardTemplate(image))}

herocardTemplate(image)
[HeroCard
images=${image}
]
However im getting this error :
getWeather.en-us.lg:‘images’ evaluated to null. [heroCards] Error occurred when evaluating ‘-${foreach(images, image, herocardTemplate(image))}’. [SendActivity_lptRk7] Error occurred when evaluating ‘Attachments=${heroCards(images)}’. [__temp__e23cda8ce5ce4ff5a0af9d70d5d19000] Error occurred when evaluating ‘-${SendActivity_lptRk7()}’., getWeather.en-us.lg:‘images’ evaluated to null. [heroCards] Error occurred when evaluating ‘-${foreach(images, image, herocardTemplate(image))}’. [SendActivity_lptRk7] Error occurred when evaluating ‘Attachments=${heroCards(images)}’. [__temp__7b6c1ebb83f844a6a0b92c33b63b9cf4] Error occurred when evaluating ‘-${SendActivity_lptRk7()}’.

# images
-```
{
  ["https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSvGsxX6UfYEAkmgkIKhNDcHA8uCKLvS1Q2zg&usqp=CAU",
  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQBGR6d-lNhZHPU6jebJVm7DmMK69vgtZZzbQ&usqp=CAU",
  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRImeU7_FXyp3bxAOcMw5bzlElk_UVEhZjuvw&usqp=CAU" ]

}
    ```

This template format is not right in multiline mode.
Replace it with :
# images
- ${
  ["https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSvGsxX6UfYEAkmgkIKhNDcHA8uCKLvS1Q2zg&usqp=CAU",
  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQBGR6d-lNhZHPU6jebJVm7DmMK69vgtZZzbQ&usqp=CAU",
  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRImeU7_FXyp3bxAOcMw5bzlElk_UVEhZjuvw&usqp=CAU" ]
}

thanks for your answer, I tried in both ways, but I´ve got the same error:

the other option:

Change the template heroCards into:
# heroCards
- ${foreach(images(), image, herocardTemplate(image))}

Because images is a template, you should call it like a function, but not a variable directly.

Thanks for your help, at the end it works with this code:
heroCards(images)
-${foreach(images(), image, herocardTemplate(image))}
herocardTemplate(image)
[HeroCard
images=${image}
]

Cool! actually, you can remove the parameter of heroCards,
# heroCards(images) => # heroCards is ok

@Danieladu
if each one of the carousel adaptive cards has a submit button can we know which card the user has selected from the carousel?
we have a scenario where the user selects a center currently, it's giving me an object reference error when I hit submit.
LG used:
[Activity
Attachments = ${json(centercardjson())} | ${json(centercardjson())}
AttachmentLayout = carousel}
]

I am trying all of the above suggestions, but nothing is working for me. I am attaching screenshots below.

I am getting the above error

I really need help here. Any help is highly appreciated. Thanks

If I want to add text alongside the image, what necessary changes are to be done on looping?

Maybe AdaptiveCard is more suitable for this case.

Yes, I will be using adaptive card, I am trying to figure out how this is working. even after copying same as the guys suggested above, it is not working for me. It's saying the images scope is not found.

@raviraushanweb
The reason is that the response is not a normal "Text" response but a Card ttachment response.
Two steps:

Delete the template HerocardActivity(image) in "Bot response" editor.
Click here

and fill in the template body of your response. Like this:

Or you can directly add the Attachment response here:

Thanks!
Ping me if there still some problems.

Thank you @Danieladu for replying. I am still getting errors
This is template:

When i am sending following response:

i am getting this error:

when I am sending following response:

I am getting this error:

Why you change
# heroCards
- ${foreach(images(), image, herocardTemplate(image))}

to

?
Keep the original one.

you could wrap the data with ${} to achieve the data.
For example, the data of "dialog.api_response.content.result" is
[
{k1: 'v1', k2: 'v2'},
{k1: 'v3', k2:'v4'}
]

And you want to output the value of "k2" in first item,
[Activity
 text = hi, the value of "k2" in first item is ${dialog.api_response.content.result[0].k2}
]

Finally you would get hi, the value of "k2" in first item is v2

You want to assign an array value to "dialog.images", but you could not push a whole array item into "dialog.images".
In the solution by you given, the value of  "dialog.images" is
[
  [
  "image1",
   "image2",
  "image3"
  ]
]

But not
  [
  "image1",
   "image2",
  "image3"
  ]

it is wrong, because you push all array into the first one.
Here are two ways to assign the array into "dialog.images".
The first way is to push one item each. So you could call three times of the "push array" operator.
The other simple way is to use "SetProperty" Action.
The screenshot:

Thank you so much @Danieladu . It is working now.

Hello,
The bot need to accept all the inputs other than the options which we are choosing on the herocard in bot framework composer... the below img is hero card it's accepting the 1234,test. But it's not accepting the 06/09.2022,7th June dates...Any solution for this

Hi @Danieladu, how to add multiple attachments based on a condition like this and its not working
getCardList()

IF: ${ Condition)))}

${getPromptsByCondition(data)}

ELSE:

${getEmptyOrPrompts(data)}

#getEmptyOrPrompts(prompts)

IF: ${Condition}
- ${json(AdaptiveCard2(data))}

ELSE:

getPromptsByCondition(prompts)

IF: ${Condition}

${json(AdaptiveCard2(data))}|${json(Adaptivecard())}

ELSE:

${json(Adaptivecard())}

Please build the output in [Activity ] structure LG or [xxxCard ] structure LG

@KowsikRaviukumar
Please build the output in [Activity ] structure LG or [xxxCard ] structure LG

My response is
[Activity
Attachments= getCardsList()
AttachmentLayout= list
]
But its not working.

@KowsikRaviukumar
change
Attachments= getCardsList()

to
Attachments= ${getCardsList()}

Hi @KowsikRaviukumar While I was trying for dynamic carousel for adaptive card i was getting an error for it
CarouselcardsActivity(dataList)
[Activity
Attachments = ${foreach(dataList, x, json(x))}
AttachmentLayout = carousel
]
CarouselCards(dataList)

${foreach(dataList, x, herocardTemplate(x))}

CarouselcardTemplate(x)
[Activity
Attachments = ${json(x)}
]

@HarishDesi please use "```" to wrap the lg content, the github would auto render the markdown text and make it unreadable.
And which template are you using, I just see three "not related" templates

@Danieladu  I loved your explication and I need your help to understand how I can create a dinamically carousel with this data.
I have a property named dialog.MyData with this:
{
"lgType": "Activity",
"text": {
"buttonName": [
"Buy",
"Buy",
"Buy"
],
"phone": [
"Samsung Galaxy S23",
"Iphone 14",
"Xiaomi Redmi"
],
"description": [
"To amazing photos and compatibility with all devices",
"Quality, speed and high technology of communication",
"Lightness, design and functionality in the same phone"
],
"images": [
"https://www.worten.pt/i/7d5c24d3f1a453e0a1ba4311ee3723b9486c0c74.jpg",
"https://www.worten.pt/i/8e35a20682daba99d4eda8f9e8d8ebece591db9c.jpg",
"https://www.worten.pt/i/0a981572e19c5f7819a3e9020228abfea7f604e4.jpg"
]
}
}
And eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeenow I tried to use the code below:
herocardsActivity(MyData)
[Activity
Attachments = ${heroCards(MyData)}
AttachmentLayout = carousel
]
heroCards(MyData)

${foreach(MyData, x, herocardTemplate(x.buttonName, x.phone, x.description, x.images))}

herocardTemplate(button, phone, description, image)
[HeroCard
title=${coalesce(phone, "")}
text=${coalesce(description, "")}
buttons=${coalesce(button, "")}
images=${coalesce(image, "")}
]
This doesn´t return an error but also does not present the information. Can you help me, please?