deploy-templates/nexus-operator/templates/cm/scripts/nexus_scripts.yaml (676 lines of code) (raw):

apiVersion: v1 data: create-blobstore.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) existingBlobStore = blobStore.getBlobStoreManager().get(parsed_args.name) if (existingBlobStore == null) { blobStore.createFileBlobStore(parsed_args.name, parsed_args.path) } create-repo-maven-group.groovy: | /* Copyright 2020 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration parsed_args = new JsonSlurper().parseText(args) configuration = repository.createGroup(parsed_args.name, 'maven2-group', parsed_args.blob_store, parsed_args.member_repos[0]) configuration.setAttributes( [ group : [ memberNames: parsed_args.member_repos ], storage: [ blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ] ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-maven-hosted.groovy: | /* Copyright 2020 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration import org.sonatype.nexus.repository.config.WritePolicy parsed_args = new JsonSlurper().parseText(args) configuration = repository.createHosted(parsed_args.name, 'maven2-hosted', parsed_args.blob_store, WritePolicy.valueOf(parsed_args.write_policy.toUpperCase()), Boolean.valueOf(parsed_args.strict_content_validation)) configuration.setAttributes( [ maven : [ versionPolicy: parsed_args.version_policy.toUpperCase(), layoutPolicy : parsed_args.layout_policy.toUpperCase() ], storage: [ writePolicy: parsed_args.write_policy.toUpperCase(), blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ] ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-maven-proxy.groovy: | /* Copyright 2020 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration parsed_args = new JsonSlurper().parseText(args) authentication = parsed_args.remote_username == null ? null : [ type: 'username', username: parsed_args.remote_username, password: parsed_args.remote_password ] configuration = repository.createProxy(parsed_args.name, 'maven2-proxy', parsed_args.remote_url, parsed_args.blob_store, Boolean.valueOf(parsed_args.strict_content_validation)) configuration.setAttributes( [ maven : [ versionPolicy: parsed_args.version_policy.toUpperCase(), layoutPolicy : parsed_args.layout_policy.toUpperCase() ], proxy : [ remoteUrl: parsed_args.remote_url, contentMaxAge: 1440.0, metadataMaxAge: 1440.0 ], httpclient: [ blocked: false, autoBlock: true, authentication: authentication, connection: [ useTrustStore: false ] ], storage: [ blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ], negativeCache: [ enabled: true, timeToLive: 1440.0 ] ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-docker-hosted.groovy: | import org.sonatype.nexus.repository.Repository import org.sonatype.nexus.repository.config.WritePolicy import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration parsed_args = new JsonSlurper().parseText(args) configuration = repository.createHosted(parsed_args.name, parsed_args.repositoryType) configuration.setAttributes( [ docker: [ httpPort: parsed_args.httpPort, httpsPort: parsed_args.httpsPort, v1Enabled: Boolean.valueOf(parsed_args.v1Enabled), forceBasicAuth: Boolean.valueOf(parsed_args.forceBasicAuth) ], storage: [ blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation), writePolicy: WritePolicy.valueOf(parsed_args.write_policy.toUpperCase()) ], ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-docker-proxy.groovy: | import org.sonatype.nexus.repository.Repository import org.sonatype.nexus.repository.config.WritePolicy import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration parsed_args = new JsonSlurper().parseText(args) authentication = parsed_args.remote_username == null ? null : [ type: 'username', username: parsed_args.remote_username, password: parsed_args.remote_password ] configuration = repository.createProxy(parsed_args.name, parsed_args.repositoryType, parsed_args.remote_url, parsed_args.blob_store, Boolean.valueOf(parsed_args.strict_content_validation)) configuration.setAttributes([ docker: [ httpPort: parsed_args.httpPort, httpsPort: parsed_args.httpsPort, v1Enabled: Boolean.valueOf(parsed_args.v1Enabled), forceBasicAuth: Boolean.valueOf(parsed_args.forceBasicAuth) ], storage: [ blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ], dockerProxy: [ indexType: parsed_args.indexType, indexUrl : parsed_args.indexURL ], httpclient: [ blocked: false, autoBlock: true, authentication: authentication, connection: [ useTrustStore: false ] ], proxy: [ remoteUrl: parsed_args.remoteURL ] ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-docker-group.groovy: | import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration import org.sonatype.nexus.repository.Repository parsed_args = new JsonSlurper().parseText(args) configuration = repository.createGroup(parsed_args.name, parsed_args.repositoryType, parsed_args.blob_store, "") configuration.setAttributes( [ group : [ memberNames: parsed_args.member_repos ], storage: [ blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ], docker: [ httpPort: parsed_args.httpPort, httpsPort: parsed_args.httpsPort, v1Enabled: Boolean.valueOf(parsed_args.v1Enabled), forceBasicAuth: Boolean.valueOf(parsed_args.forceBasicAuth) ] ] ) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-repo-raw-hosted.groovy: | /* Copyright 2020 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.repository.config.Configuration import org.sonatype.nexus.repository.config.WritePolicy parsed_args = new JsonSlurper().parseText(args) configuration = repository.createHosted(parsed_args.name, parsed_args.repositoryType, parsed_args.blob_store, WritePolicy.valueOf(parsed_args.write_policy.toUpperCase()), Boolean.valueOf(parsed_args.strict_content_validation)) configuration.setAttributes( [ storage: [ writePolicy: parsed_args.write_policy.toUpperCase(), blobStoreName: parsed_args.blob_store, strictContentTypeValidation: Boolean.valueOf(parsed_args.strict_content_validation) ] ]) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { existingRepository.stop() configuration.attributes['storage']['blobStoreName'] = existingRepository.configuration.attributes['storage']['blobStoreName'] configuration.entityMetadata=existingRepository.configuration.entityMetadata existingRepository.update(configuration) existingRepository.start() } else { repository.getRepositoryManager().create(configuration) } create-task.groovy: |- /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.scheduling.TaskConfiguration import org.sonatype.nexus.scheduling.TaskInfo import org.sonatype.nexus.scheduling.TaskScheduler import org.sonatype.nexus.scheduling.schedule.Schedule parsed_args = new JsonSlurper().parseText(args) TaskScheduler taskScheduler = container.lookup(TaskScheduler.class.getName()) TaskInfo existingTask = taskScheduler.listsTasks().find { TaskInfo taskInfo -> taskInfo.name == parsed_args.name } if (existingTask && !existingTask.remove()) { throw new RuntimeException("Could not remove currently running task : " + parsed_args.name) } TaskConfiguration taskConfiguration = taskScheduler.createTaskConfigurationInstance(parsed_args.typeId) taskConfiguration.setName(parsed_args.name) parsed_args.taskProperties.each { key, value -> taskConfiguration.setString(key, value) } Schedule schedule = taskScheduler.scheduleFactory.cron(new Date(), parsed_args.cron) taskScheduler.scheduleTask(taskConfiguration, schedule) delete-blobstore.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) existingBlobStore = blobStore.getBlobStoreManager().get(parsed_args.name) if (existingBlobStore != null) { blobStore.getBlobStoreManager().delete(parsed_args.name) } delete-repo.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) def existingRepository = repository.getRepositoryManager().get(parsed_args.name) if (existingRepository != null) { repository.getRepositoryManager().delete(parsed_args.name) } disable-outreach-capability.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import org.sonatype.nexus.capability.CapabilityRegistry capabilityRegistry = container.lookup(CapabilityRegistry.class) capabilityRegistry.all.findAll {it.context().type().toString().startsWith("Outreach")}.each { capabilityRegistry.disable(it.context().id()) } enable-realm.groovy: |- /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import org.sonatype.nexus.security.realm.RealmManager import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) realmManager = container.lookup(RealmManager.class.getName()) realmManager.enableRealm(parsed_args.name) realmManager.enableRealm("DockerToken") get-role.groovy: |- /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import groovy.json.JsonOutput import org.sonatype.nexus.security.user.UserManager import org.sonatype.nexus.security.role.NoSuchRoleException parsed_args = new JsonSlurper().parseText(args) authManager = security.getSecuritySystem().getAuthorizationManager(UserManager.DEFAULT_SOURCE) def existingRole = null try { existingRole = authManager.getRole(parsed_args.id) } catch (NoSuchRoleException ignored) { // could not find role } return JsonOutput.toJson(existingRole) setup-anonymous-access.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) security.setAnonymousAccess(Boolean.valueOf(parsed_args.anonymous_access)) setup-base-url.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) core.baseUrl(parsed_args.base_url) setup-capability.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.capability.CapabilityReference import org.sonatype.nexus.capability.CapabilityType import org.sonatype.nexus.internal.capability.DefaultCapabilityReference import org.sonatype.nexus.internal.capability.DefaultCapabilityRegistry parsed_args = new JsonSlurper().parseText(args) parsed_args.capability_properties['headerEnabled'] = parsed_args.capability_properties['headerEnabled'].toString() parsed_args.capability_properties['footerEnabled'] = parsed_args.capability_properties['footerEnabled'].toString() def capabilityRegistry = container.lookup(DefaultCapabilityRegistry.class.getName()) def capabilityType = CapabilityType.capabilityType(parsed_args.capability_typeId) DefaultCapabilityReference existing = capabilityRegistry.all.find { CapabilityReference capabilityReference -> capabilityReference.context().descriptor().type() == capabilityType } if (existing) { log.info(parsed_args.typeId + ' capability updated to: {}', capabilityRegistry.update(existing.id(), existing.active, existing.notes(), parsed_args.capability_properties).toString() ) } else { log.info(parsed_args.typeId + ' capability created as: {}', capabilityRegistry. add(capabilityType, true, 'configured through api', parsed_args.capability_properties).toString() ) } setup-ldap.groovy: |- /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import org.sonatype.nexus.ldap.persist.LdapConfigurationManager import org.sonatype.nexus.ldap.persist.entity.LdapConfiguration import org.sonatype.nexus.ldap.persist.entity.Connection import org.sonatype.nexus.ldap.persist.entity.Mapping import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) def ldapConfigMgr = container.lookup(LdapConfigurationManager.class.getName()); def ldapConfig = new LdapConfiguration() boolean update = false; // Look for existing config to update ldapConfigMgr.listLdapServerConfigurations().each { if (it.name == parsed_args.name) { ldapConfig = it update = true } } ldapConfig.setName(parsed_args.name) // Connection connection = new Connection() connection.setHost(new Connection.Host(Connection.Protocol.valueOf(parsed_args.protocol), parsed_args.hostname, Integer.valueOf(parsed_args.port))) connection.setAuthScheme("none") connection.setSearchBase(parsed_args.search_base) connection.setConnectionTimeout(30) connection.setConnectionRetryDelay(300) connection.setMaxIncidentsCount(3) ldapConfig.setConnection(connection) // Mapping mapping = new Mapping() mapping.setUserBaseDn(parsed_args.user_base_dn) mapping.setUserObjectClass(parsed_args.user_object_class) mapping.setUserIdAttribute(parsed_args.user_id_attribute) mapping.setUserRealNameAttribute(parsed_args.user_real_name_attribute) mapping.setEmailAddressAttribute(parsed_args.user_email_attribute) mapping.setLdapGroupsAsRoles(true) mapping.setGroupBaseDn(parsed_args.group_base_dn) mapping.setGroupObjectClass(parsed_args.group_object_class) mapping.setGroupIdAttribute(parsed_args.group_id_attribute) mapping.setGroupMemberAttribute(parsed_args.group_member_attribute) mapping.setGroupMemberFormat(parsed_args.group_member_format) ldapConfig.setMapping(mapping) if (update) { ldapConfigMgr.updateLdapServerConfiguration(ldapConfig) } else { ldapConfigMgr.addLdapServerConfiguration(ldapConfig) } setup-privilege.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.security.privilege.NoSuchPrivilegeException import org.sonatype.nexus.security.user.UserManager import org.sonatype.nexus.security.privilege.Privilege parsed_args = new JsonSlurper().parseText(args) authManager = security.getSecuritySystem().getAuthorizationManager(UserManager.DEFAULT_SOURCE) def privilege boolean update = true try { privilege = authManager.getPrivilege(parsed_args.name) } catch (NoSuchPrivilegeException ignored) { // could not find any existing privilege update = false privilege = new Privilege( 'id': parsed_args.name, 'name': parsed_args.name ) } privilege.setDescription(parsed_args.description) privilege.setType(parsed_args.type) privilege.setProperties([ 'format': parsed_args.format, 'repository': parsed_args.repository, 'actions': parsed_args.actions.join(',') ] as Map<String, String>) if (update) { authManager.updatePrivilege(privilege) } else { authManager.addPrivilege(privilege) } setup-role.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.security.user.UserManager import org.sonatype.nexus.security.role.NoSuchRoleException parsed_args = new JsonSlurper().parseText(args) authManager = security.getSecuritySystem().getAuthorizationManager(UserManager.DEFAULT_SOURCE) def existingRole = null try { existingRole = authManager.getRole(parsed_args.id) } catch (NoSuchRoleException ignored) { // could not find role } privileges = (parsed_args.privileges == null ? new HashSet() : parsed_args.privileges.toSet()) roles = (parsed_args.roles == null ? new HashSet() : parsed_args.roles.toSet()) if (existingRole != null) { existingRole.setName(parsed_args.name) existingRole.setDescription(parsed_args.description) existingRole.setPrivileges(privileges) existingRole.setRoles(roles) authManager.updateRole(existingRole) } else { security.addRole(parsed_args.id, parsed_args.name, parsed_args.description, privileges.toList(), roles.toList()) } setup-user.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper import org.sonatype.nexus.security.user.UserNotFoundException parsed_args = new JsonSlurper().parseText(args) try { // update an existing user user = security.securitySystem.getUser(parsed_args.username) user.setFirstName(parsed_args.first_name) user.setLastName(parsed_args.last_name) user.setEmailAddress(parsed_args.email) security.securitySystem.updateUser(user) security.setUserRoles(parsed_args.username, parsed_args.roles) security.securitySystem.changePassword(parsed_args.username, parsed_args.password) } catch(UserNotFoundException ignored) { // create the new user security.addUser(parsed_args.username, parsed_args.first_name, parsed_args.last_name, parsed_args.email, true, parsed_args.password, parsed_args.roles) } update-admin-password.groovy: | /* Copyright 2018 EPAM Systems. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import groovy.json.JsonSlurper parsed_args = new JsonSlurper().parseText(args) security.securitySystem.changePassword('admin', parsed_args.new_password) kind: ConfigMap metadata: labels: app: nexus {{- include "nexus-operator.metaLabels" . | nindent 4 }} name: nexus-scripts