def describe(name): ''' name (str): name of repository CLI Example:: .. code-block:: bash salt myminion nexus3_repository.describe name=maven-central ''' ret = {'repository': {}} nc = nexus3.NexusClient() resp = nc.get('v1/repositorySettings') if resp['status'] != 200: ret['comment'] = 'Error restrieving repository information for {}.'.format( name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret repo_dict = json.loads(resp['body']) for repo in repo_dict: if repo['name'] == name: ret['repository'] = repo return ret
def describe(name): ''' name (str): name of role CLI Example:: .. code-block:: bash salt myminion nexus3_roles.describe nx-admin ''' ret = { 'role': {}, } path = roles_path + '/' + name nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['role'] = json.loads(resp['body']) else: ret['comment'] = 'could not retrieve role {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(name): ''' name (str): name of user CLI Example:: .. code-block:: bash salt myminion nexus3_users.describe test_user ''' ret = { 'user': {}, } path = users_path nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: users = json.loads(resp['body']) for user in users: if user['userId'] == name: ret['user'] = user return ret else: ret['comment'] = 'could not retrieve user {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def reset(): ''' Resets realms to default CLI Example:: .. code-block:: bash salt myminion nexus3_realms.reset ''' ret = { 'realms': {}, } path = realms_path + '/active' # these are the defaults enabled # upon first start of Nexus 3 payload = ['NexusAuthenticatingRealm', 'NexusAuthorizingRealm', 'NpmToken'] nc = nexus3.NexusClient() resp = nc.put(path, payload) if resp['status'] == 204: ret['realms'] = list_active()['realms'] ret['comment'] = 'realms reset to defaults.' else: ret['comment'] = 'could not reset realms.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(name): ''' name (str): privilege name CLI Example:: .. code-block:: bash salt myminion nexus3_privileges.describe nx-analytics-all ''' ret = { 'privilege': {}, } path = privileges_path + '/' + name nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['privilege'] = json.loads(resp['body']) else: ret['comment'] = 'could not retrieve privilege {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def delete(name): ''' name (str): name of user CLI Example:: .. code-block:: bash salt myminion nexus3_users.delete test_user ''' ret = {} path = users_path + '/' + name nc = nexus3.NexusClient() resp = nc.delete(path) if resp['status'] == 204: ret['comment'] = 'user {} deleted'.format(name) else: ret['comment'] = 'could not delete user {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def delete(name): ''' name (str): Name of blobstore CLI Example:: .. code-block:: bash salt myminion nexus3_blobstores.delete name=myblobstore ''' ret = {'comment': 'Deleted blobstore "{}"'.format(name)} path = '{}/{}'.format(blobstore_path, name) nc = nexus3.NexusClient() resp = nc.delete(path) if resp['status'] == 404: ret['comment'] = 'blobstore {} does not exist.'.format(name) elif resp['status'] != 204: ret['comment'] = 'could not delete blobstore {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def list_active(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_realms.list_active ''' ret = { 'realms': {}, } path = realms_path + '/active' nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['realms'] = json.loads(resp['body']) else: ret['comment'] = 'could not retrieve active realms.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def delete(name): ''' name (str): privilege name CLI Example:: .. code-block:: bash salt myminion nexus3_privileges.delete nx-analytics-all ''' ret = {} path = privileges_path + '/' + name nc = nexus3.NexusClient() resp = nc.delete(path) if resp['status'] == 204: ret['comment'] = 'privilege {} delete.'.format(name) else: ret['comment'] = 'could not delete privilege {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def list_all(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_privileges.list_all ''' ret = { 'privileges': {}, } path = privileges_path nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['privileges'] = json.loads(resp['body']) else: ret['comment'] = 'could not retrieve available privileges.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def update(realms=[]): ''' realms (list): list of realms in order they should be used .. note:: Include all desired realms in list as this will override the current list CLI Example:: .. code-block:: bash salt myminion nexus3_realms.update realms="['NexusAuthenticatingRealm','NexusAuthorizingRealm','NpmToken','DockerToken']" ''' ret = { 'realms': {}, } path = realms_path + '/active' nc = nexus3.NexusClient() resp = nc.put(path, realms) if resp['status'] == 204: ret['realms'] = list_active()['realms'] ret['comment'] = 'realms updated.' else: ret['comment'] = 'could not update realms.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_readonly.describe ''' ret = { 'read-only': {}, } path = read_only_path nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['read-only'] = json.loads(resp['body']) else: ret['comment'] = 'could not get read-only state.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def list_all(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_tasks.list_all TODO: add support for the continuationToken for larger lists ''' ret = { 'tasks': {}, } path = tasks_path nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['tasks'] = json.loads(resp['body']) else: ret['comment'] = 'could not get tasks' ret['error'] = { 'code': resp['status'], 'msg': resp['body'] } return ret
def describe(id): ''' id (str): task id CLI Example:: .. code-block:: bash salt myminion nexus3_tasks.describe id=512be2c3-aa04-448f-b0ce-2047eee34903 ''' ret = { 'task': {}, } path = tasks_path + '/' + id nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['task'] = json.loads(resp['body']) else: ret['comment'] = 'could not get task: {}'.format(id) ret['error'] = { 'code': resp['status'], 'msg': resp['body'] } return ret
def verify(to): ''' CLI Example:: to (str): address to send test email to .. code-block:: bash salt myminion nexus3_email.verify ''' ret = {} verify_path = email_path + '/verify' nc = nexus3.NexusClient() resp = nc.post(verify_path, to) if resp['status'] == 200: status = json.loads(resp['body']) if status['success']: ret['comment'] = 'email sent to {}.'.format(to) else: ret['comment'] = 'could not send email.' ret['error'] = status['reason'] else: ret['comment'] = 'could not send email.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def delete(name): ''' name (str): name of repository CLI Example:: .. code-block:: bash salt myminion nexus3_repository.delete name=maven-central ''' ret = {'comment': 'Repository {} deleted'.format(name)} delete_path = repo_base_path + '/' + name nc = nexus3.NexusClient() resp = nc.delete(delete_path) if resp['status'] == 404: ret['comment'] = 'Repository {} not present.'.format(name) elif resp['status'] != 204: ret['comment'] = 'Error deleting repository {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def update(name, description=None, privileges=None, roles=None): ''' name (str): name of role description (str): description of role (Default: None) privileges (list): list of privileges (Default: None) roles (list): roles to inherit from (Default: None) CLI Example:: .. code-block:: bash salt myminion nexus3_roles.update name=test_role roles="['nx-admin']" ''' ret = { 'role': {}, } meta = describe(name)['role'] path = roles_path + '/' + name if description is not None: meta['description'] = description if privileges is not None: meta['privileges'] = privileges if roles is not None: meta['roles'] = roles nc = nexus3.NexusClient() resp = nc.put(path, meta) if resp['status'] == 204: ret['role'] = describe(name)['role'] else: ret['comment'] = 'could not update role {}.'.format(name) ret['error'] = { 'code': resp['status'], 'msg': resp['body'], } return ret
def create(name, description='', privileges=[], roles=[]): ''' name (str): name of role description (str): description of role privileges (list): list of privileges (Default: []) roles (list): roles to inherit from (Default: []) CLI Example:: .. code-block:: bash salt myminion nexus3_roles.create name=test_role description='test role' roles="['nx-admin']" ''' ret = { 'role': {}, } path = roles_path payload = { 'id': name, 'name': name, 'description': description, 'privileges': privileges, 'roles': roles } nc = nexus3.NexusClient() resp = nc.post(path, payload) if resp['status'] == 200: ret['role'] = json.loads(resp['body']) else: ret['comment'] = 'could not create role {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(name): ''' name (str): Name of blobstore CLI Example:: .. code-block:: bash salt myminion nexus3_blobstores.describe name=myblobstore ''' ret = { 'blobstore': {}, } resp = list_all() if 'error' in resp.keys(): ret['result'] = False ret['comment'] = 'could not retrieve blobstore {}.'.format(name) ret['error'] = resp['error'] return ret for bstore in resp['blobstores']: if bstore['name'] == name: ret['blobstore'] = bstore break if ret['blobstore']: path = '{}/{}/{}'.format(blobstore_path, ret['blobstore']['type'].lower(), name) nc = nexus3.NexusClient() resp = nc.get(path) if resp['status'] == 200: ret['blobstore'].update(json.loads(resp['body'])) else: ret['comment'] = 'could not retrieve blobstore {}'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def update_password(name, password): ''' name (str): name of user password (str): password CLI Example:: .. code-block:: bash salt myminion nexus3_users.update_password name=test_user password=testing123 .. note:: running this command via the command-line could result in the password being saved is the user shell history ''' ret = { 'user': {}, } meta = describe(name)['user'] if not meta: ret['comment'] = 'user {} does not exist'.format(name) return ret path = users_path + '/' + name + '/change-password' nc = nexus3.NexusClient() resp = nc.put(path, password) if resp['status'] == 204: ret['comment'] = 'updated password for {}.'.format(name) else: ret['comment'] = 'could not update password for {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def list_all(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_blobstores.list_all ''' ret = {'blobstores': {}} nc = nexus3.NexusClient() resp = nc.get(blobstore_path) if resp['status'] == 200: ret['blobstores'] = json.loads(resp['body']) else: ret['comment'] = 'could not retrieve blobstores.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_email.describe ''' ret = {'email': {}} nc = nexus3.NexusClient() resp = nc.get(email_path) if resp['status'] == 200: ret['email'] = json.loads(resp['body']) else: ret['comment'] = 'could not to retrieve email settings' ret['error'] = 'code:{} msg:{}'.format(resp['status'], resp['body']) return ret
def reset(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_email.reset ''' ret = {} nc = nexus3.NexusClient() resp = nc.delete(email_path) if resp['status'] == 204: ret['comment'] = 'email settings reset' else: ret['comment'] = 'could not reset email settings' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def stop(id): ''' id (str): task id CLI Example:: .. code-block:: bash salt myminion nexus3_tasks.stop id=512be2c3-aa04-448f-b0ce-2047eee34903 ''' ret = { 'task': {}, } path = tasks_path + '/' + id + '/run' nc = nexus3.NexusClient() resp = nc.post(path, None) if resp['status'] == 204: ret['task'] = 'stopped task: {}'.format(id) else: ret['comment'] = 'could not stop task: {}'.format(id) if resp['status'] == 404: msg = 'task not found' elif resp['status'] == 405: msg = 'task is disabled' else: msg = resp['body'] ret['error'] = { 'code': resp['status'], 'msg': msg } return ret
def list_all(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_repositories.list_all ''' ret = {'repositories': {}} nc = nexus3.NexusClient() resp = nc.get('v1/repositorySettings') if resp['status'] != 200: ret['comment'] = 'Error retrieving repositories.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret ret['repositories'] = json.loads(resp['body']) return ret
def enabled(state, force_release=False): ''' state (bool): enable or disable read-only [True|False] force_release (bool): force release of read-only [True|False] (Default: False) CLI Example:: .. code-block:: bash salt myminion nexus3_readonly.enabled True salt myminion nexus3_readonly.enabled state=False ''' ret = { 'read-only': False, } if state: path = read_only_path + '/freeze' elif force_release: path = read_only_path + '/force_release' else: path = read_only_path + '/release' nc = nexus3.NexusClient() resp = nc.post(path) if resp['status'] == 204: ret['read-only'] = state else: ret['comment'] = 'could not set read-only mode' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def describe(): ''' CLI Example:: .. code-block:: bash salt myminion nexus3_anonymous_access.describe ''' ret = { 'anonymous_access': {}, } nc = nexus3.NexusClient() resp = nc.get(anon_access_path) if resp['status'] == 200: ret['anonymous_access'] = json.loads(resp['body']) else: ret['comment'] = 'Failed to retrieve anonymous access settings.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def enable(enabled): ''' enabled (bool): enable or disable anonymous access [True|False] CLI Example:: .. code-block:: bash salt myminion nexus3_anonymous_access.enable True ''' ret = {'anonymous_access': {}} payload = { 'enabled': enabled, 'userId': 'anonymous', 'realmName': 'NexusAuthorizingRealm' } metadata = describe() if not metadata['anonymous_access']: return metadata nc = nexus3.NexusClient() resp = nc.put(anon_access_path, payload) if resp['status'] == 200: ret['anonymous_access'] = json.loads(resp['body']) else: ret['comment'] = 'Failed to update anonymous access.' ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def create(name, type, actions=[], contentSelector=None, description='New Nexus privilege', domain=None, format=None, pattern=None, repository=None, scriptName=None): ''' name (str): privilege name type (str): privilege type [application|repository-admin|respository-content-selector|repository-view|script|wildcard] actions (list): list of actions [ADD|ALL|BROWSE|CREATE|DELETE|EDIT|READ|UPDATE] (Default: []) contentSelector (str): name of content selector (Default: None .. note:: required for respository-content-selector privilege type content selector must exist before assigning privileges description (str): description of privilge (Default: 'New Nexus privilege') domain (str): domain of privilege [roles|scripts|search|selectors|settings|ssl-truststore|tasks|users|userschangepw] (Default: None) .. note:: required for application privilege type format (str): respository format [bower|cocoapads|conan|docker|etc.] (Default: None) .. note:: required for repository-admin, respository-content-selector, and repository-view privilege types pattern (regex): regex pattern to group other privileges (Default: None) .. note:: required for wildcard privilege type repository (str): repository name (Default: None) .. note:: required for repository-admin, respository-content-selector, and repository-view privilege types scriptName (str): script name (Default: None) CLI Example:: .. code-block:: bash salt myminion nexus3_privileges.create name=nx-userschangepw actions="['ADD','READ']" description='Change password permission' domain=userschangepw type=application salt myminion nexus3_privileges.create name=nx-repository-view-nuget-nuget-hosted-browse actions=['BROWSE'] description='Browse privilege for nuget-hosted repository views' format=nuget repository=nuget-hosted type=repository-view ''' ret = {'privilege': {}} path = privileges_path + '/' + type payload = { 'name': name, 'description': description, 'actions': actions, } application = {'domain': domain} repository = {'format': format, 'repository': repository} repository_content_selector = { 'format': format, 'repository': repository, 'contentSelector': contentSelector } script = {'scriptName': scriptName} wildcard = {'name': name, 'description': description, 'pattern': pattern} if type == 'application': if domain is None: ret['comment'] = 'domain cannot be None for type {}'.format(type) return ret payload.update(application) if type in ['repository-admin', 'repository-view']: if format is None or repository is None: ret['comment'] = 'format and repository cannot be None for type {}'.format( type) return ret payload.update(repository) if type == 'repository-content-selector': if format is None or repository is None or contentSelector is None: ret['comment'] = 'format, contentSelector, and repository cannot be None for type {}'.format( type) return ret payload.update(repository_content_selector) if type == 'scripts': if script is None: ret['comment'] = 'scriptName cannot be None for type {}'.format( type) return ret payload.update(script) if type == 'wildcard': if pattern is None: ret['comment'] = 'pattern cannot be None for type {}'.format(type) return ret payload = wildcard nc = nexus3.NexusClient() resp = nc.post(path, payload) if resp['status'] == 201: ret['comment'] = 'privilege {} created.'.format(name) ret['privilege'] = describe(name)['privilege'] else: ret['comment'] = 'could not create privilege {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret
def update(name, actions=None, contentSelector=None, description=None, domain=None, format=None, pattern=None, repository=None, scriptName=None): ''' name (str): privilege name actions (list): list of actions [ADD|ALL|CREATE|DELETE|EDIT|READ|UPDATE] (Default: None) contentSelector (str): name of content selector (Default: None) .. note:: content selector must exist before assigning privileges description (str): description of privilege (Default: None) domain (str): domain of privilege [roles|scripts|search|selectors|settings|ssl-truststore|tasks|users|userschangepw] (Default: None) .. note:: required for application privilege type format (str): respository format [bower|cocoapads|conan|docker|etc.] (Default: None) .. note:: required for repository-admin, respository-content-selector, and repository-view privilege types pattern (regex): regex pattern to group other privileges (Default: None) .. note:: required for wildcard privilege type repository (str): repository name (Default: None) .. note:: required for repository-admin, respository-content-selector, and repository-view privilege types scriptName (str): script name (Default: None) CLI Example:: .. code-block:: bash salt myminion nexus3_privileges.update name=testing actions="['ADD','READ']" description='Change password permission' domain=userschangepw type=application ''' ret = {'privilege': {}} priv_description = describe(name) if 'error' in priv_description.keys(): ret['comment'] = 'failed to update privilege.' ret['error'] = priv_description['error'] return ret meta = priv_description['privilege'] path = privileges_path + '/' + meta['type'] + '/' + name if actions is not None: meta['actions'] = actions if contentSelector is not None and 'contentSelector' in meta.keys(): meta['contentSelctor'] = contentSelector if description is not None: meta['description'] = description if domain is not None and 'domain' in meta.keys(): meta['domain'] = domain if format is not None and 'format' in meta.keys(): meta['format'] = format if repository is not None and 'repository' in meta.keys(): meta['repository'] = repository if pattern is not None and 'pattern' in meta.keys(): meta['pattern'] = pattern if scriptName is not None and 'scriptName' in meta.keys(): meta['scriptName'] = scriptName nc = nexus3.NexusClient() resp = nc.put(path, meta) if resp['status'] == 204: ret['comment'] = 'updated privilege {}.'.format(name) ret['privilege'] = describe(name)['privilege'] else: ret['comment'] = 'could not update privilege {}.'.format(name) ret['error'] = {'code': resp['status'], 'msg': resp['body']} return ret