diff options
Diffstat (limited to '')
30 files changed, 45 insertions, 165 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c50243b1e8..57a976cd14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ This is a list of high-level changes for each release of AWX. A full list of commits can be found at `https://github.com/ansible/awx/releases/tag/<version>`. +## 16.0.0 (TBD) +- Removed support for Mercurial-based project updates - https://github.com/ansible/tower/issues/4727 + ## 15.0.1 (October 20, 2020) - Added several optimizations to improve performance for a variety of high-load simultaneous job launch use cases https://github.com/ansible/awx/pull/8403 - Added the ability to source roles and collections from requirements.yaml files (not just requirements.yml) - https://github.com/ansible/awx/issues/4540 @@ -88,7 +91,7 @@ This is a list of high-level changes for each release of AWX. A full list of com - Fixed a bug that caused rsyslogd's configuration file to have world-readable file permissions, potentially leaking secrets (CVE-2020-10782) ## 12.0.0 (Jun 9, 2020) -- Removed memcached as a dependency of AWX (https://github.com/ansible/awx/pull/7240) +- Removed memcached as a dependency of AWX (https://github.com/ansible/awx/pull/7240) - Moved to a single container image build instead of separate awx_web and awx_task images. The container image is just `awx` (https://github.com/ansible/awx/pull/7228) - Official AWX container image builds now use a two-stage container build process that notably reduces the size of our published images (https://github.com/ansible/awx/pull/7017) - Removed support for HipChat notifications ([EoL announcement](https://www.atlassian.com/partnerships/slack/faq#faq-98b17ca3-247f-423b-9a78-70a91681eff0)); all previously-created HipChat notification templates will be deleted due to this removal. diff --git a/awx/api/serializers.py b/awx/api/serializers.py index abd30a7fab..ecce831a19 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -640,7 +640,7 @@ class EmptySerializer(serializers.Serializer): class UnifiedJobTemplateSerializer(BaseSerializer): - # As a base serializer, the capabilities prefetch is not used directly, + # As a base serializer, the capabilities prefetch is not used directly, # instead they are derived from the Workflow Job Template Serializer and the Job Template Serializer, respectively. capabilities_prefetch = [] @@ -1748,7 +1748,7 @@ class HostSerializer(BaseSerializerWithVariables): attrs['variables'] = json.dumps(vars_dict) if Group.objects.filter(name=name, inventory=inventory).exists(): raise serializers.ValidationError(_('A Group with that name already exists.')) - + return super(HostSerializer, self).validate(attrs) def to_representation(self, obj): @@ -3945,12 +3945,12 @@ class ProjectUpdateEventSerializer(JobEventSerializer): return UriCleaner.remove_sensitive(obj.stdout) def get_event_data(self, obj): - # the project update playbook uses the git, hg, or svn modules + # the project update playbook uses the git or svn modules # to clone repositories, and those modules are prone to printing # raw SCM URLs in their stdout (which *could* contain passwords) # attempt to detect and filter HTTP basic auth passwords in the stdout # of these types of events - if obj.event_data.get('task_action') in ('git', 'hg', 'svn'): + if obj.event_data.get('task_action') in ('git', 'svn'): try: return json.loads( UriCleaner.remove_sensitive( diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index 87a12a7d51..43e845af0c 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -242,8 +242,6 @@ class DashboardView(APIView): git_failed_projects = git_projects.filter(last_job_failed=True) svn_projects = user_projects.filter(scm_type='svn') svn_failed_projects = svn_projects.filter(last_job_failed=True) - hg_projects = user_projects.filter(scm_type='hg') - hg_failed_projects = hg_projects.filter(last_job_failed=True) archive_projects = user_projects.filter(scm_type='archive') archive_failed_projects = archive_projects.filter(last_job_failed=True) data['scm_types'] = {} @@ -257,11 +255,6 @@ class DashboardView(APIView): 'failures_url': reverse('api:project_list', request=request) + "?scm_type=svn&last_job_failed=True", 'total': svn_projects.count(), 'failed': svn_failed_projects.count()} - data['scm_types']['hg'] = {'url': reverse('api:project_list', request=request) + "?scm_type=hg", - 'label': 'Mercurial', - 'failures_url': reverse('api:project_list', request=request) + "?scm_type=hg&last_job_failed=True", - 'total': hg_projects.count(), - 'failed': hg_failed_projects.count()} data['scm_types']['archive'] = {'url': reverse('api:project_list', request=request) + "?scm_type=archive", 'label': 'Remote Archive', 'failures_url': reverse('api:project_list', request=request) + "?scm_type=archive&last_job_failed=True", diff --git a/awx/main/analytics/core.py b/awx/main/analytics/core.py index 2c77444929..e9f7f99bc0 100644 --- a/awx/main/analytics/core.py +++ b/awx/main/analytics/core.py @@ -68,7 +68,7 @@ def register(key, version, description=None, format='json', expensive=False): @register('projects_by_scm_type', 1) def projects_by_scm_type(): - return {'git': 5, 'svn': 1, 'hg': 0} + return {'git': 5, 'svn': 1} """ def decorate(f): @@ -102,7 +102,7 @@ def gather(dest=None, module=None, subset = None, since = None, until = now(), c last_run = since or settings.AUTOMATION_ANALYTICS_LAST_GATHER or (now() - timedelta(weeks=4)) logger.debug("Last analytics run was: {}".format(settings.AUTOMATION_ANALYTICS_LAST_GATHER)) - + if _valid_license() is False: logger.exception("Invalid License provided, or No License Provided") return None diff --git a/awx/main/isolated/manager.py b/awx/main/isolated/manager.py index 623bb5700e..1c0978f432 100644 --- a/awx/main/isolated/manager.py +++ b/awx/main/isolated/manager.py @@ -149,7 +149,6 @@ class IsolatedManager(object): # don't rsync source control metadata (it can be huge!) '- /project/.git', '- /project/.svn', - '- /project/.hg', # don't rsync job events that are in the process of being written '- /artifacts/job_events/*-partial.json.tmp', # don't rsync the ssh_key FIFO diff --git a/awx/main/migrations/0123_drop_hg_support.py b/awx/main/migrations/0123_drop_hg_support.py new file mode 100644 index 0000000000..2a0ed1d1fb --- /dev/null +++ b/awx/main/migrations/0123_drop_hg_support.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.16 on 2020-12-01 18:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0122_really_remove_cloudforms_inventory'), + ] + + operations = [ + migrations.AlterField( + model_name='project', + name='scm_type', + field=models.CharField(blank=True, choices=[('', 'Manual'), ('git', 'Git'), ('svn', 'Subversion'), ('insights', 'Red Hat Insights'), ('archive', 'Remote Archive')], default='', help_text='Specifies the source control system used to store the project.', max_length=8, verbose_name='SCM Type'), + ), + migrations.AlterField( + model_name='projectupdate', + name='scm_type', + field=models.CharField(blank=True, choices=[('', 'Manual'), ('git', 'Git'), ('svn', 'Subversion'), ('insights', 'Red Hat Insights'), ('archive', 'Remote Archive')], default='', help_text='Specifies the source control system used to store the project.', max_length=8, verbose_name='SCM Type'), + ), + ] diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index bc52d4269c..65fb8304ce 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -52,7 +52,6 @@ class ProjectOptions(models.Model): SCM_TYPE_CHOICES = [ ('', _('Manual')), ('git', _('Git')), - ('hg', _('Mercurial')), ('svn', _('Subversion')), ('insights', _('Red Hat Insights')), ('archive', _('Remote Archive')), diff --git a/awx/main/tasks.py b/awx/main/tasks.py index afa7d8e714..38bc722907 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1260,7 +1260,7 @@ class BaseTask(object): # so it *should* have a negligible performance impact task = event_data.get('event_data', {}).get('task_action') try: - if task in ('git', 'hg', 'svn'): + if task in ('git', 'svn'): event_data_json = json.dumps(event_data) event_data_json = UriCleaner.remove_sensitive(event_data_json) event_data = json.loads(event_data_json) @@ -2154,7 +2154,7 @@ class RunProjectUpdate(BaseTask): elif not scm_branch: raise RuntimeError('Could not determine a revision to run from project.') elif not scm_branch: - scm_branch = {'hg': 'tip'}.get(project_update.scm_type, 'HEAD') + scm_branch = 'HEAD' galaxy_creds_are_defined = ( project_update.project.organization and diff --git a/awx/main/tests/unit/test_tasks.py b/awx/main/tests/unit/test_tasks.py index 8dd9225f00..f94c70c739 100644 --- a/awx/main/tests/unit/test_tasks.py +++ b/awx/main/tests/unit/test_tasks.py @@ -1909,19 +1909,16 @@ class TestProjectUpdateCredentials(TestJobExecution): parametrize = { 'test_username_and_password_auth': [ dict(scm_type='git'), - dict(scm_type='hg'), dict(scm_type='svn'), dict(scm_type='archive'), ], 'test_ssh_key_auth': [ dict(scm_type='git'), - dict(scm_type='hg'), dict(scm_type='svn'), dict(scm_type='archive'), ], 'test_awx_task_env': [ dict(scm_type='git'), - dict(scm_type='hg'), dict(scm_type='svn'), dict(scm_type='archive'), ] diff --git a/awx/main/utils/common.py b/awx/main/utils/common.py index 00fc73c631..283a028f3f 100644 --- a/awx/main/utils/common.py +++ b/awx/main/utils/common.py @@ -222,9 +222,8 @@ def update_scm_url(scm_type, url, username=True, password=True, ''' # Handle all of the URL formats supported by the SCM systems: # git: https://www.kernel.org/pub/software/scm/git/docs/git-clone.html#URLS - # hg: http://www.selenic.com/mercurial/hg.1.html#url-paths # svn: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.advanced.reposurls - if scm_type not in ('git', 'hg', 'svn', 'insights', 'archive'): + if scm_type not in ('git', 'svn', 'insights', 'archive'): raise ValueError(_('Unsupported SCM type "%s"') % str(scm_type)) if not url.strip(): return '' @@ -256,8 +255,8 @@ def update_scm_url(scm_type, url, username=True, password=True, # SCP style before passed to git module. parts = urllib.parse.urlsplit('git+ssh://%s' % modified_url) # Handle local paths specified without file scheme (e.g. /path/to/foo). - # Only supported by git and hg. - elif scm_type in ('git', 'hg'): + # Only supported by git. + elif scm_type == 'git': if not url.startswith('/'): parts = urllib.parse.urlsplit('file:///%s' % url) else: @@ -268,7 +267,6 @@ def update_scm_url(scm_type, url, username=True, password=True, # Validate that scheme is valid for given scm_type. scm_type_schemes = { 'git': ('ssh', 'git', 'git+ssh', 'http', 'https', 'ftp', 'ftps', 'file'), - 'hg': ('http', 'https', 'ssh', 'file'), 'svn': ('http', 'https', 'svn', 'svn+ssh', 'file'), 'insights': ('http', 'https'), 'archive': ('http', 'https'), @@ -300,12 +298,6 @@ def update_scm_url(scm_type, url, username=True, password=True, if scm_type == 'git' and parts.scheme.endswith('ssh') and parts.hostname in special_git_hosts and netloc_password: #raise ValueError('Password not allowed for SSH access to %s.' % parts.hostname) netloc_password = '' - special_hg_hosts = ('bitbucket.org', 'altssh.bitbucket.org') - if scm_type == 'hg' and parts.scheme == 'ssh' and parts.hostname in special_hg_hosts and netloc_username != 'hg': - raise ValueError(_('Username must be "hg" for SSH access to %s.') % parts.hostname) - if scm_type == 'hg' and parts.scheme == 'ssh' and netloc_password: - #raise ValueError('Password not supported for SSH with Mercurial.') - netloc_password = '' if netloc_username and parts.scheme != 'file' and scm_type not in ("insights", "archive"): netloc = u':'.join([urllib.parse.quote(x,safe='') for x in (netloc_username, netloc_password) if x]) diff --git a/awx/playbooks/action_plugins/hg_deprecation.py b/awx/playbooks/action_plugins/hg_deprecation.py deleted file mode 100644 index d4593b2360..0000000000 --- a/awx/playbooks/action_plugins/hg_deprecation.py +++ /dev/null @@ -1,15 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from ansible.plugins.action import ActionBase - - -class ActionModule(ActionBase): - - def run(self, tmp=None, task_vars=None): - self._supports_check_mode = False - result = super(ActionModule, self).run(tmp, task_vars) - result['changed'] = result['failed'] = False - result['msg'] = '' - self._display.deprecated("Mercurial support is deprecated") - return result diff --git a/awx/playbooks/project_update.yml b/awx/playbooks/project_update.yml index 74e55e7ada..a7b7007d56 100644 --- a/awx/playbooks/project_update.yml +++ b/awx/playbooks/project_update.yml @@ -49,12 +49,6 @@ - update_git - block: - - name: include hg tasks - include_tasks: project_update_hg_tasks.yml - tags: - - update_hg - - - block: - name: update project using svn subversion: dest: "{{project_path|quote}}" @@ -150,7 +144,6 @@ msg: "Repository Version {{ scm_version }}" tags: - update_git - - update_hg - update_svn - update_insights - update_archive diff --git a/awx/playbooks/project_update_hg_tasks.yml b/awx/playbooks/project_update_hg_tasks.yml deleted file mode 100644 index 3553d60984..0000000000 --- a/awx/playbooks/project_update_hg_tasks.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: Mercurial support is deprecated. - hg_deprecation: - -- name: update project using hg - hg: - dest: "{{project_path|quote}}" - repo: "{{scm_url|quote}}" - revision: "{{scm_branch|quote}}" - force: "{{scm_clean}}" - register: hg_result - -- name: Set the hg repository version - set_fact: - scm_version: "{{ hg_result['after'] }}" - when: "'after' in hg_result" - -- name: parse hg version string properly - set_fact: - scm_version: "{{scm_version|regex_replace('^([A-Za-z0-9]+).*$', '\\1')}}" diff --git a/awx/settings/local_settings.py.docker_compose b/awx/settings/local_settings.py.docker_compose index 5ffbc9db1c..213f4efe4b 100644 --- a/awx/settings/local_settings.py.docker_compose +++ b/awx/settings/local_settings.py.docker_compose @@ -175,13 +175,6 @@ TEST_GIT_PUBLIC_HTTPS = 'https://github.com/ansible/ansible.github.com.git' TEST_GIT_PRIVATE_HTTPS = 'https://github.com/ansible/product-docs.git' TEST_GIT_PRIVATE_SSH = 'git@github.com:ansible/product-docs.git' -TEST_HG_USERNAME = '' -TEST_HG_PASSWORD = '' -TEST_HG_KEY_DATA = TEST_SSH_KEY_DATA -TEST_HG_PUBLIC_HTTPS = 'https://bitbucket.org/cchurch/django-hotrunner' -TEST_HG_PRIVATE_HTTPS = '' -TEST_HG_PRIVATE_SSH = '' - TEST_SVN_USERNAME = '' TEST_SVN_PASSWORD = '' TEST_SVN_PUBLIC_HTTPS = 'https://github.com/ansible/ansible.github.com' diff --git a/awx/settings/local_settings.py.example b/awx/settings/local_settings.py.example index d9de08cc5a..59f3bdfa6a 100644 --- a/awx/settings/local_settings.py.example +++ b/awx/settings/local_settings.py.example @@ -38,7 +38,7 @@ if is_testing(sys.argv): }, } } - + # AMQP configuration. BROKER_URL = 'amqp://guest:guest@localhost:5672' @@ -146,13 +146,6 @@ TEST_GIT_PUBLIC_HTTPS = 'https://github.com/ansible/ansible.github.com.git' TEST_GIT_PRIVATE_HTTPS = 'https://github.com/ansible/product-docs.git' TEST_GIT_PRIVATE_SSH = 'git@github.com:ansible/product-docs.git' -TEST_HG_USERNAME = '' -TEST_HG_PASSWORD = '' -TEST_HG_KEY_DATA = TEST_SSH_KEY_DATA -TEST_HG_PUBLIC_HTTPS = 'https://bitbucket.org/cchurch/django-hotrunner' -TEST_HG_PRIVATE_HTTPS = '' -TEST_HG_PRIVATE_SSH = '' - TEST_SVN_USERNAME = '' TEST_SVN_PASSWORD = '' TEST_SVN_PUBLIC_HTTPS = 'https://github.com/ansible/ansible.github.com' diff --git a/awx/ui_next/src/components/Lookup/ProjectLookup.jsx b/awx/ui_next/src/components/Lookup/ProjectLookup.jsx index b434233957..dee802c2aa 100644 --- a/awx/ui_next/src/components/Lookup/ProjectLookup.jsx +++ b/awx/ui_next/src/components/Lookup/ProjectLookup.jsx @@ -108,7 +108,6 @@ function ProjectLookup({ options: [ [``, i18n._(t`Manual`)], [`git`, i18n._(t`Git`)], - [`hg`, i18n._(t`Mercurial`)], [`svn`, i18n._(t`Subversion`)], [`archive`, i18n._(t`Remote Archive`)], [`insights`, i18n._(t`Red Hat Insights`)], diff --git a/awx/ui_next/src/components/UserAndTeamAccessAdd/getResourceAccessConfig.js b/awx/ui_next/src/components/UserAndTeamAccessAdd/getResourceAccessConfig.js index 843670e1a1..9333d1770c 100644 --- a/awx/ui_next/src/components/UserAndTeamAccessAdd/getResourceAccessConfig.js +++ b/awx/ui_next/src/components/UserAndTeamAccessAdd/getResourceAccessConfig.js @@ -87,7 +87,6 @@ export default function getResourceAccessConfig(i18n) { options: [ [``, i18n._(t`Manual`)], [`git`, i18n._(t`Git`)], - [`hg`, i18n._(t`Mercurial`)], [`svn`, i18n._(t`Subversion`)], [`archive`, i18n._(t`Remote Archive`)], [`insights`, i18n._(t`Red Hat Insights`)], @@ -157,7 +156,6 @@ export default function getResourceAccessConfig(i18n) { options: [ [``, i18n._(t`Manual`)], [`git`, i18n._(t`Git`)], - [`hg`, i18n._(t`Mercurial`)], [`svn`, i18n._(t`Subversion`)], [`archive`, i18n._(t`Remote Archive`)], [`insights`, i18n._(t`Red Hat Insights`)], diff --git a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.test.jsx b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.test.jsx index 5caa143c09..e6141bebb7 100644 --- a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.test.jsx +++ b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.test.jsx @@ -35,7 +35,6 @@ describe('<ProjectAdd />', () => { choices: [ ['', 'Manual'], ['git', 'Git'], - ['hg', 'Mercurial'], ['svn', 'Subversion'], ['archive', 'Remote Archive'], ['insights', 'Red Hat Insights'], diff --git a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.test.jsx b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.test.jsx index 5171e0f532..dc1a49eb78 100644 --- a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.test.jsx +++ b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.test.jsx @@ -47,7 +47,6 @@ describe('<ProjectEdit />', () => { choices: [ ['', 'Manual'], ['git', 'Git'], - ['hg', 'Mercurial'], ['svn', 'Subversion'], ['archive', 'Remote Archive'], ['insights', 'Red Hat Insights'], diff --git a/awx/ui_next/src/screens/Project/ProjectList/ProjectList.jsx b/awx/ui_next/src/screens/Project/ProjectList/ProjectList.jsx index 0fff5472da..a1f6d36f41 100644 --- a/awx/ui_next/src/screens/Project/ProjectList/ProjectList.jsx +++ b/awx/ui_next/src/screens/Project/ProjectList/ProjectList.jsx @@ -140,7 +140,6 @@ function ProjectList({ i18n }) { options: [ [``, i18n._(t`Manual`)], [`git`, i18n._(t`Git`)], - [`hg`, i18n._(t`Mercurial`)], [`svn`, i18n._(t`Subversion`)], [`archive`, i18n._(t`Remote Archive`)], [`insights`, i18n._(t`Red Hat Insights`)], diff --git a/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx b/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx index b23e8d3982..fe0c8b1bb2 100644 --- a/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx +++ b/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx @@ -21,7 +21,6 @@ import { import Popover from '../../../components/Popover'; import { GitSubForm, - HgSubForm, SvnSubForm, ArchiveSubForm, InsightsSubForm, @@ -237,13 +236,6 @@ function ProjectFormFields({ scmUpdateOnLaunch={formik.values.scm_update_on_launch} /> ), - hg: ( - <HgSubForm - credential={credentials.scm} - onCredentialSelection={handleCredentialSelection} - scmUpdateOnLaunch={formik.values.scm_update_on_launch} - /> - ), svn: ( <SvnSubForm credential={credentials.scm} diff --git a/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx b/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx index b4bbcbe9c9..f482e15192 100644 --- a/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx +++ b/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx @@ -45,7 +45,6 @@ describe('<ProjectForm />', () => { choices: [ ['', 'Manual'], ['git', 'Git'], - ['hg', 'Mercurial'], ['svn', 'Subversion'], ['archive', 'Remote Archive'], ['insights', 'Red Hat Insights'], @@ -296,10 +295,6 @@ describe('<ProjectForm />', () => { 'FormGroup[label="Source Control Credential Type"] FormSelect' ); await act(async () => { - scmTypeSelect.invoke('onChange')('hg', { target: { name: 'Mercurial' } }); - }); - wrapper.update(); - await act(async () => { wrapper .find('FormGroup[label="Source Control URL"] input') .simulate('change', { diff --git a/awx/ui_next/src/screens/Project/shared/ProjectSubForms/HgSubForm.jsx b/awx/ui_next/src/screens/Project/shared/ProjectSubForms/HgSubForm.jsx deleted file mode 100644 index 5640861ecc..0000000000 --- a/awx/ui_next/src/screens/Project/shared/ProjectSubForms/HgSubForm.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import 'styled-components/macro'; -import React from 'react'; -import { withI18n } from '@lingui/react'; -import { t } from '@lingui/macro'; -import { - UrlFormField, - BranchFormField, - ScmCredentialFormField, - ScmTypeOptions, -} from './SharedFields'; - -const HgSubForm = ({ - i18n, - credential, - onCredentialSelection, - scmUpdateOnLaunch, -}) => ( - <> - <UrlFormField - i18n={i18n} - tooltip={ - <span> - {i18n._(t`Example URLs for Mercurial Source Control include:`)} - <ul css={{ margin: '10px 0 10px 20px' }}> - <li>https://bitbucket.org/username/project</li> - <li>ssh://hg@bitbucket.org/username/project</li> - <li>ssh://server.example.com/path</li> - </ul> - {i18n._(t`Note: Mercurial does not support password authentication - for SSH. Do not put the username and key in the URL. If using - Bitbucket and SSH, do not supply your Bitbucket username. - `)} - </span> - } - /> - <BranchFormField - i18n={i18n} - label={i18n._(t`Source Control Branch/Tag/Revision`)} - /> - <ScmCredentialFormField - credential={credential} - onCredentialSelection={onCredentialSelection} - /> - <ScmTypeOptions scmUpdateOnLaunch={scmUpdateOnLaunch} /> - </> -); - -export default withI18n()(HgSubForm); diff --git a/awx/ui_next/src/screens/Project/shared/ProjectSubForms/index.js b/awx/ui_next/src/screens/Project/shared/ProjectSubForms/index.js index 8cf3e5594b..1e8b3f6044 100644 --- a/awx/ui_next/src/screens/Project/shared/ProjectSubForms/index.js +++ b/awx/ui_next/src/screens/Project/shared/ProjectSubForms/index.js @@ -1,5 +1,4 @@ export { default as GitSubForm } from './GitSubForm'; -export { default as HgSubForm } from './HgSubForm'; export { default as InsightsSubForm } from './InsightsSubForm'; export { default as ManualSubForm } from './ManualSubForm'; export { default as SvnSubForm } from './SvnSubForm'; diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx index 3a351c660a..34fc52bef2 100644 --- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx +++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx @@ -88,7 +88,6 @@ function ProjectsList({ i18n, nodeResource, onUpdateNodeResource }) { options: [ [``, i18n._(t`Manual`)], [`git`, i18n._(t`Git`)], - [`hg`, i18n._(t`Mercurial`)], [`svn`, i18n._(t`Subversion`)], [`archive`, i18n._(t`Remote Archive`)], [`insights`, i18n._(t`Red Hat Insights`)], diff --git a/awx/ui_next/src/types.js b/awx/ui_next/src/types.js index 66270820a8..1f3148ab10 100644 --- a/awx/ui_next/src/types.js +++ b/awx/ui_next/src/types.js @@ -153,7 +153,7 @@ export const Project = shape({ created: string, name: string.isRequired, description: string, - scm_type: oneOf(['', 'git', 'hg', 'svn', 'archive', 'insights']), + scm_type: oneOf(['', 'git', 'svn', 'archive', 'insights']), scm_url: string, scm_branch: string, scm_refspec: string, diff --git a/awx_collection/plugins/modules/tower_project.py b/awx_collection/plugins/modules/tower_project.py index d4a9834aad..3e6d6ab442 100644 --- a/awx_collection/plugins/modules/tower_project.py +++ b/awx_collection/plugins/modules/tower_project.py @@ -34,7 +34,7 @@ options: scm_type: description: - Type of SCM resource. - choices: ["manual", "git", "hg", "svn", "insights"] + choices: ["manual", "git", "svn", "insights"] default: "manual" type: str scm_url: @@ -186,7 +186,7 @@ def main(): argument_spec = dict( name=dict(required=True), description=dict(), - scm_type=dict(choices=['manual', 'git', 'hg', 'svn', 'insights'], default='manual'), + scm_type=dict(choices=['manual', 'git', 'svn', 'insights'], default='manual'), scm_url=dict(), local_path=dict(), scm_branch=dict(default=''), diff --git a/docs/clustering.md b/docs/clustering.md index ecf9a97dee..c77968191d 100644 --- a/docs/clustering.md +++ b/docs/clustering.md @@ -304,7 +304,7 @@ When verifying acceptance, we should ensure that the following statements are tr - Break the link between instances such that it forms two or more groups where Group A and Group B can't communicate but all instances can communicate with the database. * Crucially, when network partitioning is resolved, all instances should recover into a consistent state. * Upgrade Testing - verify behavior before and after are the same for the end user. -* Project Updates should be thoroughly tested for all SCM types (`git`, `svn`, `hg`) and for manual projects. +* Project Updates should be thoroughly tested for all SCM types (`git`, `svn`, `archive`) and for manual projects. * Setting up instance groups in two scenarios: a) instances are shared between groups b) instances are isolated to particular groups diff --git a/docs/overview.md b/docs/overview.md index 4006cdc784..f410b2bdc2 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -16,8 +16,8 @@ of the most notable ones are: ### Projects Projects represent a collection of Ansible playbooks. Most AWX users create -Projects that import periodically from source control systems (such as git, -mercurial, or subversion repositories). This import is accomplished via an +Projects that import periodically from source control systems (such as git +or subversion repositories). This import is accomplished via an Ansible playbook included with AWX (which makes use of the various source control management modules in Ansible). diff --git a/installer/roles/image_build/templates/Dockerfile.j2 b/installer/roles/image_build/templates/Dockerfile.j2 index c0c978636b..2eadeff3a5 100644 --- a/installer/roles/image_build/templates/Dockerfile.j2 +++ b/installer/roles/image_build/templates/Dockerfile.j2 @@ -125,7 +125,6 @@ RUN dnf -y update && \ glibc-langpack-en \ krb5-workstation \ libcgroup-tools \ - mercurial \ nginx \ @postgresql:10 \ python3-devel \ |