Unit name issue with SFTP command.
Cory Johns
cory.johns at canonical.com
Fri Nov 27 21:57:31 UTC 2015
You can get the full unit name with:
unit_name = d.sentry['ibm-db2'][0].info['unit_name']
d.action_do(unit_name, ...)
We should perhaps consider moving action_do to the UnitSentry so that it
could instead be called as:
d.sentry['ibm-db2'][0].action_do(...)
On Fri, Nov 27, 2015 at 1:38 AM, Sunitha Radharapu <sradhara at in.ibm.com>
wrote:
> HI,
>
> We have action_do function to download the packages from the repository in
> our amulet test as follows.
> * uuid = d.action_do('ibm-db2/0', 'download', {"username":
> config.get('ibm-repo').get('sftp_user_name'), "password":
> config.get('ibm-repo').get('sftp_password'), "packagename":
> config.get('ibm-repo').get('package_name'), "host":
> config.get('ibm-repo').get('sftp_host')})*
>
> With newer version of juju we cannot give the unit name like ibm-db2/0 as
> the unit names keeps increasing sequentially with multiple deployment.
> We tried to get the unit name as follows and passed it to action_do
> function, but it threw error.
>
> *db2_unit1 = d.sentry['ibm-db2'][0]*
> * uuid = d.action_do(db2_unit1, 'download', {"username":
> config.get('ibm-repo').get('sftp_user_name'), "password":
> config.get('ibm-repo').get('sftp_password'), "packagename":
> config.get('ibm-repo').get('package_name'), "host":
> config.get('ibm-repo').get('sftp_host')})*
>
>
>
> The error we got is :
>
>
> *======================================================================*
> *ERROR: setUpClass (__main__.BundleTest)*
> *----------------------------------------------------------------------*
> *Traceback (most recent call last):*
> * File "tests/10-bundles-test.py", line 47, in setUpClass*
> * uuid = d.action_do(db2_unit1, 'download', {"username":
> config.get('ibm-repo').get('sftp_user_name'), "password":
> config.get('ibm-repo').get('sftp_password'), "packagename":
> config.get('ibm-repo').get('package_name'), "host":
> config.get('ibm-repo').get('sftp_host')})*
> * File "/usr/lib/python2.7/dist-packages/amulet/deployer.py", line 372, in
> action_do*
> * if '/' not in unit:*
> *TypeError: argument of type 'UnitSentry' is not iterable*
>
>
>
> The action_do function in the above in .py file is defined as follows:
>
> def action_do(self, unit, action, action_args={}):
> """
> :param unit: Unit to run action on.
> :param action: Action to run.
> :param action_args: Action parameters.
>
> Runs specified action on specified unit and returns the uuid to fetch
> results by.
>
> """
> if '/' not in unit:
> raise ValueError('%s is not a unit' % unit)
> cmd = ['action', 'do', unit, action, '--format', 'json']
> for key, value in action_args.items():
> cmd += ["%s=%s" % (str(key), str(value))]
> result = juju(cmd)
> action_result = json.loads(result)
> results_id = action_result["Action queued with id"]
> return results_id
>
>
> From this we understand that "/" is required in the unitname for action to
> work .
>
> How do we resolve this issue in latest version of Juju. Is it a limitation
> in the newer version for using action commands inside amulet test ?
>
>
> Thanks,
> Sunitha.
>
> --
> Juju mailing list
> Juju at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20151127/29996024/attachment.html>
More information about the Juju
mailing list