Skip to content

Implement device management subcommand #7844

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Aug 31, 2018

Conversation

theotherjimmy
Copy link
Contributor

@theotherjimmy theotherjimmy commented Aug 21, 2018

Description

This series implements the device-managment/dev-mgmt/dm mbed cli
subcommand. This subcommand is much like all of manifest tool, except it
also removes a few difficulties with using the manifest tool with an
Mbed OS project. In particular:

  • mbed dm init will pull create/find and download a developer
    certificate for you
  • mbed dm update will automatially populate the payload feild with
    the most recently built "application" side of a managed BL mode project

Note: mbed dm subcommand implemented by ARMmbed/mbed-cli#735

Pull request type

[ ] Fix
[ ] Refactor
[ ] New target
[x] Feature
[ ] Breaking change

app_name, output_ext
))
options.payload = open(payload_name, "rb")
return func(options)
Copy link
Contributor

@cmonr cmonr Aug 22, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting pattern for wrapping a function call.

@cmonr
Copy link
Contributor

cmonr commented Aug 22, 2018

@theotherjimmy Can you think of anyone else who should probably review this PR?

@theotherjimmy
Copy link
Contributor Author

@bridadan Maybe would be a good candidate

Copy link
Contributor

@bridadan bridadan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! I think a few comments sprinkled throughout some of the more obscure bits would help for future maintenance/readability, but otherwise good!

from tools.options import extract_mcus


class MbedExtendedArgs(MainArgumentParser):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this class is basically "eating up" the unused arguments that mbed-cli will always provide? Do you think you could add a few code comments describing what this class is doing for other maintainers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class is not doing that. It's removing the required-ness of the "payload" parameter and adding another way to specify the payload as a build artefact.

Copy link
Contributor

@bridadan bridadan Aug 24, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I guess my initial feedback about the code comments still stands then. But that's just for folks who poke at this code, not for the use of the feature (aka not a blocker).

with open("mbed_cloud_dev_credentials.c", "w") as fout:
fout.write(dev_cert_info.header_file)
return func(options)
return inner
Copy link
Contributor

@bridadan bridadan Aug 22, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is awesome! Nice 👍

@cmonr
Copy link
Contributor

cmonr commented Aug 24, 2018

/morph build

@mbed-ci
Copy link

mbed-ci commented Aug 24, 2018

Build : SUCCESS

Build number : 2887
Build artifacts/logs : http://mbed-os.s3-website-eu-west-1.amazonaws.com/?prefix=builds/7844/

Triggering tests

/morph test
/morph uvisor-test
/morph export-build
/morph mbed2-build

@mbed-ci
Copy link

mbed-ci commented Aug 24, 2018

@cmonr
Copy link
Contributor

cmonr commented Aug 26, 2018

/morph test

1 similar comment
@cmonr
Copy link
Contributor

cmonr commented Aug 27, 2018

/morph test

@@ -15,3 +15,5 @@ pyelftools>=0.24
jsonschema>=2.6
future>=0.16.0
six>=1.11.0
git+https://github.com/armmbed/[email protected]
mbed-cloud-sdk==2.0.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is causing test to fail to initialize. Please review the test results (find them via the log, they did not report back as it fails really early)

Collecting mbed-cloud-sdk==2.0.0 (from -r requirements.txt (line 19))
python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:369: SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  SNIMissingWarning

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://pypi.org/project/mbed-cloud-sdk/

It exists, why is CI failing to install it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@0xc0170 Fwiw, I was unable to reproduce the failure. pip install -r requirements when using this PR head worked fine.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah! Got the log:

pip install -r requirements.txt
Collecting git+https://github.com/armmbed/[email protected] (from -r requirements.txt (line 18))
  Cloning https://github.com/armmbed/manifest-tool.git (to revision v1.4.5) to /tmp/pip-req-build-x1310E
Requirement already satisfied: colorama>=0.3.3 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 1)) (0.3.9)
Requirement already satisfied: PySerial>=2.7 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 2)) (3.4)
Requirement already satisfied: PrettyTable>=0.7.2 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 3)) (0.7.2)
Requirement already satisfied: Jinja2>=2.7.3 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 4)) (2.10)
Requirement already satisfied: IntelHex>=1.3 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 5)) (2.1)
Requirement already satisfied: junit-xml in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 6)) (1.8)
Requirement already satisfied: pyYAML in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 7)) (3.12)
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages (from -r requirements.txt (line 8)) (2.2.1)
Requirement already satisfied: mbed-ls>=0.2.13 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 9)) (1.3.5)
Requirement already satisfied: mbed-host-tests>=1.1.2 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 10)) (1.3.0)
Requirement already satisfied: mbed-greentea>=0.2.24 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 11)) (1.3.2)
Requirement already satisfied: beautifulsoup4>=4 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 12)) (4.6.0)
Requirement already satisfied: fuzzywuzzy>=0.11 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 13)) (0.16.0)
Requirement already satisfied: pyelftools>=0.24 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 14)) (0.24)
Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 15)) (2.6.0)
Requirement already satisfied: future>=0.16.0 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 16)) (0.16.0)
Requirement already satisfied: six>=1.11.0 in ./.env/lib/python2.7/site-packages (from -r requirements.txt (line 17)) (1.11.0)
Collecting mbed-cloud-sdk==2.0.0 (from -r requirements.txt (line 19))
/redacted/.env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:369: SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  SNIMissingWarning
/redacted/.env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:160: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecurePlatformWarning
  Could not find a version that satisfies the requirement mbed-cloud-sdk==2.0.0 (from -r requirements.txt (line 19)) (from versions: )
No matching distribution found for mbed-cloud-sdk==2.0.0 (from -r requirements.txt (line 19))

@0xc0170 0xc0170 removed the risk: G label Aug 29, 2018
@cmonr
Copy link
Contributor

cmonr commented Aug 29, 2018

Retriggering to get CI information.

/morph test

This pulls in additional packages requiured for SSL verification for Py2
Ref: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
@cmonr
Copy link
Contributor

cmonr commented Aug 29, 2018

/morph test

@cmonr
Copy link
Contributor

cmonr commented Aug 29, 2018

/morph test

@mbed-ci
Copy link

mbed-ci commented Aug 29, 2018

@cmonr
Copy link
Contributor

cmonr commented Aug 29, 2018

/morph build

@cmonr
Copy link
Contributor

cmonr commented Aug 29, 2018

Because of course we would have license issues...

/morph build

@mbed-ci
Copy link

mbed-ci commented Aug 30, 2018

Build : FAILURE

Build number : 2959
Build artifacts/logs : http://mbed-os.s3-website-eu-west-1.amazonaws.com/?prefix=builds/7844/

@mbed-ci
Copy link

mbed-ci commented Aug 30, 2018

Build : SUCCESS

Build number : 2961
Build artifacts/logs : http://mbed-os.s3-website-eu-west-1.amazonaws.com/?prefix=builds/7844/

Triggering tests

/morph test
/morph export-build
/morph mbed2-build

@cmonr
Copy link
Contributor

cmonr commented Aug 30, 2018

/morph test

@mbed-ci
Copy link

mbed-ci commented Aug 30, 2018

@mbed-ci
Copy link

mbed-ci commented Aug 30, 2018

@0xc0170
Copy link
Contributor

0xc0170 commented Aug 30, 2018

CI error

/morph test

@0xc0170
Copy link
Contributor

0xc0170 commented Aug 30, 2018

Seems like Ci is not triggering the build, one more try and then I'll run it manually

/morph test

@cmonr
Copy link
Contributor

cmonr commented Aug 30, 2018

/morph test

@mbed-ci
Copy link

mbed-ci commented Aug 31, 2018

@cmonr cmonr merged commit b6f0ee2 into ARMmbed:master Aug 31, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants