diff --git a/plugins/module_utils/sdkmanager.py b/plugins/module_utils/sdkmanager.py index 8ab157de4a..88e4b5c07b 100644 --- a/plugins/module_utils/sdkmanager.py +++ b/plugins/module_utils/sdkmanager.py @@ -19,7 +19,8 @@ def sdkmanager_runner(module, **kwargs): update=cmd_runner_fmt.as_fixed("--update"), installed=cmd_runner_fmt.as_fixed("--list_installed"), list=cmd_runner_fmt.as_fixed('--list'), - newer=cmd_runner_fmt.as_fixed("--newer") + newer=cmd_runner_fmt.as_fixed("--newer"), + sdk_root=cmd_runner_fmt.as_opt_eq_val("--sdk_root", ignore_none=True) ), force_lang="C.UTF-8", **kwargs @@ -61,7 +62,7 @@ class AndroidSdkManager(object): self.runner = runner def get_installed_packages(self): - with self.runner('installed') as ctx: + with self.runner('installed sdk_root') as ctx: rc, stdout, stderr = ctx.run() data = stdout.split('\n') @@ -89,7 +90,7 @@ class AndroidSdkManager(object): return packages def get_updatable_packages(self): - with self.runner('list newer') as ctx: + with self.runner('list newer sdk_root') as ctx: rc, stdout, stderr = ctx.run() data = stdout.split('\n') @@ -129,5 +130,5 @@ class AndroidSdkManager(object): if len(packages) == 0: return 0, '', '' command_arg = [x.name for x in packages] - with self.runner('state name') as ctx: + with self.runner('state name sdk_root') as ctx: return ctx.run(name=command_arg, state=state) diff --git a/plugins/modules/android_sdk.py b/plugins/modules/android_sdk.py index 5090224a31..4e4130a3cf 100644 --- a/plugins/modules/android_sdk.py +++ b/plugins/modules/android_sdk.py @@ -8,7 +8,8 @@ class AndroidSdk(StateModuleHelper): argument_spec=dict( state=dict(type='str', default='present', choices=['present', 'absent', 'latest']), package=dict(type='list', elements='str', aliases=['pkg', 'name']), - update=dict(type='bool', default=False) + update=dict(type='bool', default=False), + sdk_root=dict(type='path') ), supports_check_mode=True ) diff --git a/tests/integration/targets/android_sdk/tasks/main.yml b/tests/integration/targets/android_sdk/tasks/main.yml index 3966ed0c64..bf7d1de31e 100644 --- a/tests/integration/targets/android_sdk/tasks/main.yml +++ b/tests/integration/targets/android_sdk/tasks/main.yml @@ -57,6 +57,27 @@ state: latest register: platform_tools_updated + - name: Create new sdk root + file: + path: "{{ ansible_env.HOME }}/newroot" + state: directory + register: newroot + + - name: Accept licenses in the new root + shell: "yes | sdkmanager --sdk_root={{ newroot.path }} --licenses" + + - name: Install a package to a new root + android_sdk: + name: build-tools;34.0.0 + state: present + sdk_root: "{{ newroot.path }}" + register: new_root_package + + - name: Check package is installed + stat: + path: "{{ newroot.path }}/build-tools/34.0.0" + register: new_root_package_stat + - name: Run tests assert: that: @@ -66,4 +87,6 @@ - build_tools_deleted.changed - not build_tools_deleted2.changed - not platform_tools_present.changed - - platform_tools_updated.changed \ No newline at end of file + - platform_tools_updated.changed + - new_root_package.changed + - new_root_package_stat.stat.exists \ No newline at end of file