diff --git a/Makefile b/Makefile index ad8a166af2..f6fc9e2896 100644 --- a/Makefile +++ b/Makefile @@ -410,13 +410,13 @@ uwsgi: collectstatic @if [ "$(VENV_BASE)" ]; then \ . $(VENV_BASE)/tower/bin/activate; \ fi; \ - uwsgi -b 32768 --socket :8050 --module=awx.wsgi:application --home=/venv/tower --chdir=/tower_devel/ --vacuum --processes=5 --harakiri=120 --master --no-orphans --py-autoreload 1 --max-requests=1000 --stats /tmp/stats.socket --master-fifo=/awxfifo --lazy-apps + uwsgi -b 32768 --socket 127.0.0.1:8050 --module=awx.wsgi:application --home=/venv/tower --chdir=/tower_devel/ --vacuum --processes=5 --harakiri=120 --master --no-orphans --py-autoreload 1 --max-requests=1000 --stats /tmp/stats.socket --master-fifo=/awxfifo --lazy-apps daphne: @if [ "$(VENV_BASE)" ]; then \ . $(VENV_BASE)/tower/bin/activate; \ fi; \ - daphne -b 0.0.0.0 -p 8051 awx.asgi:channel_layer + daphne -b 127.0.0.1 -p 8051 awx.asgi:channel_layer runworker: @if [ "$(VENV_BASE)" ]; then \ @@ -702,13 +702,19 @@ rpm-build: mkdir -p $@ rpm-build/$(SDIST_TAR_FILE): rpm-build dist/$(SDIST_TAR_FILE) tar-build/$(SETUP_TAR_FILE) - cp packaging/rpm/$(NAME).spec rpm-build/ + ansible localhost \ + -m template \ + -a "src=packaging/rpm/$(NAME).spec.j2 dest=rpm-build/$(NAME).spec" \ + -e tower_version=$(VERSION) \ + -e tower_release=$(RELEASE) + cp packaging/rpm/tower.te rpm-build/ cp packaging/rpm/tower.fc rpm-build/ cp packaging/rpm/$(NAME).sysconfig rpm-build/ cp packaging/remove_tower_source.py rpm-build/ cp packaging/bytecompile.sh rpm-build/ cp tar-build/$(SETUP_TAR_FILE) rpm-build/ + if [ "$(OFFICIAL)" != "yes" ] ; then \ (cd dist/ && tar zxf $(SDIST_TAR_FILE)) ; \ (cd dist/ && mv $(NAME)-$(VERSION)-$(BUILD) $(NAME)-$(VERSION)) ; \ @@ -764,8 +770,7 @@ requirements/requirements_ansible_local.txt: --dest=requirements/vendor 2>/dev/null | sed -n 's/^\s*Saved\s*//p' > $@ rpm-build/$(RPM_NVR).src.rpm: /etc/mock/$(MOCK_CFG).cfg - $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build \ - --define "tower_version $(VERSION)" --define "tower_release $(RELEASE)" $(SCL_DEFINES) + $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build mock-srpm: rpmtar rpm-build/$(RPM_NVR).src.rpm @echo "#############################################" @@ -776,8 +781,7 @@ mock-srpm: rpmtar rpm-build/$(RPM_NVR).src.rpm brew-srpm: brewrpmtar mock-srpm rpm-build/$(RPM_NVR).$(RPM_ARCH).rpm: rpm-build/$(RPM_NVR).src.rpm - $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --rebuild rpm-build/$(RPM_NVR).src.rpm \ - --define "tower_version $(VERSION)" --define "tower_release $(RELEASE)" $(SCL_DEFINES) + $(MOCK_BIN) -r $(MOCK_CFG) --resultdir rpm-build --rebuild rpm-build/$(RPM_NVR).src.rpm mock-rpm: rpmtar rpm-build/$(RPM_NVR).$(RPM_ARCH).rpm @echo "#############################################" diff --git a/awx/api/views.py b/awx/api/views.py index f922a38244..ad3185d98d 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -234,7 +234,8 @@ class ApiV1PingView(APIView): response['instances'] = [] for instance in Instance.objects.all(): - response['instances'].append(dict(node=instance.hostname, heartbeat=instance.modified, capacity=instance.capacity)) + response['instances'].append(dict(node=instance.hostname, heartbeat=instance.modified, + capacity=instance.capacity, version=instance.version)) response['instances'].sort() return Response(response) diff --git a/awx/conf/fields.py b/awx/conf/fields.py index f8d012a3aa..e68523271b 100644 --- a/awx/conf/fields.py +++ b/awx/conf/fields.py @@ -31,6 +31,16 @@ class CharField(CharField): return super(CharField, self).to_representation(value) +class IntegerField(IntegerField): + + def get_value(self, dictionary): + ret = super(IntegerField, self).get_value(dictionary) + # Handle UI corner case + if ret == '' and self.allow_null and not getattr(self, 'allow_blank', False): + return None + return ret + + class StringListField(ListField): child = CharField() diff --git a/awx/lib/tests/test_display_callback.py b/awx/lib/tests/test_display_callback.py index f84ab0df4f..2e979a67ca 100644 --- a/awx/lib/tests/test_display_callback.py +++ b/awx/lib/tests/test_display_callback.py @@ -86,7 +86,19 @@ def executor(tmpdir_factory, request): - name: Hello Message debug: msg: "Hello World!" -'''} # noqa +'''}, # noqa +{'results_included.yml': ''' +- name: Run module which generates results list + connection: local + hosts: all + gather_facts: no + vars: + results: ['foo', 'bar'] + tasks: + - name: Generate results list + debug: + var: results +'''}, # noqa ]) def test_callback_plugin_receives_events(executor, cache, event, playbook): executor.run() diff --git a/awx/lib/tower_display_callback/module.py b/awx/lib/tower_display_callback/module.py index 76dcb5be7f..14e6fba66d 100644 --- a/awx/lib/tower_display_callback/module.py +++ b/awx/lib/tower_display_callback/module.py @@ -63,7 +63,6 @@ class BaseCallbackModule(CallbackBase): @contextlib.contextmanager def capture_event_data(self, event, **event_data): - event_data.setdefault('uuid', str(uuid.uuid4())) if event not in self.EVENTS_WITHOUT_TASK: @@ -75,7 +74,7 @@ class BaseCallbackModule(CallbackBase): if event_data['res'].get('_ansible_no_log', False): event_data['res'] = {'censored': CENSORED} for i, item in enumerate(event_data['res'].get('results', [])): - if event_data['res']['results'][i].get('_ansible_no_log', False): + if isinstance(item, dict) and item.get('_ansible_no_log', False): event_data['res']['results'][i] = {'censored': CENSORED} with event_context.display_lock: diff --git a/awx/locale/django.pot b/awx/locale/django.pot index 9a47e8d755..223dcfd680 100644 --- a/awx/locale/django.pot +++ b/awx/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-09 14:32+0000\n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -66,7 +66,21 @@ msgstr "" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "" -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +msgid "Filtering on password fields is not allowed." +msgstr "" + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, python-format +msgid "Filtering on %s is not allowed." +msgstr "" + +#: awx/api/filters.py:347 +#, python-format +msgid "cannot order by field %s" +msgstr "" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "" @@ -111,306 +125,306 @@ msgstr "" msgid "JSON parse error - %s" msgstr "" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:254 msgid "Command" msgstr "" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "" -#: awx/api/serializers.py:257 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "" -#: awx/api/serializers.py:653 awx/api/serializers.py:711 awx/api/views.py:3842 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " "supported for sizes over %(supported_size)d bytes" msgstr "" -#: awx/api/serializers.py:726 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "" -#: awx/api/serializers.py:728 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "" -#: awx/api/serializers.py:752 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "" -#: awx/api/serializers.py:836 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "" -#: awx/api/serializers.py:997 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "" -#: awx/api/serializers.py:1001 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" -#: awx/api/serializers.py:1007 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "" -#: awx/api/serializers.py:1189 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "" -#: awx/api/serializers.py:1217 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "" -#: awx/api/serializers.py:1274 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "" -#: awx/api/serializers.py:1349 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" -#: awx/api/serializers.py:1402 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "" -#: awx/api/serializers.py:1406 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" -#: awx/api/serializers.py:1408 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "" -#: awx/api/serializers.py:1770 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1775 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1780 +#: awx/api/serializers.py:1779 msgid "" "Inherit permissions from organization roles. If provided on creation, do not " "give either user or team." msgstr "" -#: awx/api/serializers.py:1796 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "" -#: awx/api/serializers.py:1809 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -#: awx/api/serializers.py:1905 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "" -#: awx/api/serializers.py:1907 awx/api/serializers.py:1909 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "" -#: awx/api/serializers.py:1911 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "" -#: awx/api/serializers.py:1977 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:277 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "" -#: awx/api/serializers.py:1982 awx/main/models/jobs.py:280 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "" -#: awx/api/serializers.py:1989 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" -#: awx/api/serializers.py:2049 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "" -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "" -#: awx/api/serializers.py:2138 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "" -#: awx/api/serializers.py:2423 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" -#: awx/api/serializers.py:2428 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" -#: awx/api/serializers.py:2433 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "" -#: awx/api/serializers.py:2671 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "" -#: awx/api/serializers.py:2697 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "" -#: awx/api/serializers.py:2839 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" -#: awx/api/serializers.py:2862 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "" -#: awx/api/serializers.py:2867 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "" -#: awx/api/serializers.py:2870 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "" -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "" -#: awx/api/serializers.py:2925 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "" -#: awx/api/serializers.py:2947 +#: awx/api/serializers.py:2946 msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "" -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "" -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "" -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "" -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "" -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "" -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "" -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "" -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "" -#: awx/api/serializers.py:2969 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "" -#: awx/api/serializers.py:2973 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "" -#: awx/api/serializers.py:2977 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "" -#: awx/api/serializers.py:3012 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" msgstr "" -#: awx/api/serializers.py:3014 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " "associated or disassociated with object2." msgstr "" -#: awx/api/serializers.py:3017 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " "disassociate events this is the object type that object1 is being associated " "with." msgstr "" -#: awx/api/serializers.py:3020 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "" -#: awx/api/serializers.py:3123 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "" -#: awx/api/serializers.py:3125 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "" @@ -500,231 +514,231 @@ msgstr "" msgid "Schedule Jobs List" msgstr "" -#: awx/api/views.py:727 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "" -#: awx/api/views.py:952 awx/api/views.py:1311 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "" -#: awx/api/views.py:958 awx/api/views.py:4129 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "" -#: awx/api/views.py:962 awx/api/views.py:4143 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "" -#: awx/api/views.py:969 awx/api/views.py:4135 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" msgstr "" -#: awx/api/views.py:1059 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "" -#: awx/api/views.py:1088 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "" -#: awx/api/views.py:1192 awx/api/views.py:2285 awx/api/views.py:3298 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" -#: awx/api/views.py:1269 +#: awx/api/views.py:1272 msgid "Me" msgstr "" -#: awx/api/views.py:1315 awx/api/views.py:4084 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "" -#: awx/api/views.py:1321 awx/api/views.py:4088 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "" -#: awx/api/views.py:1326 awx/api/views.py:4093 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" msgstr "" -#: awx/api/views.py:1330 awx/api/views.py:4097 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "" -#: awx/api/views.py:1428 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "" -#: awx/api/views.py:1434 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "" -#: awx/api/views.py:1583 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "" -#: awx/api/views.py:1820 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "" -#: awx/api/views.py:2140 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "" -#: awx/api/views.py:2168 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "" -#: awx/api/views.py:2176 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "" -#: awx/api/views.py:2206 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -#: awx/api/views.py:2414 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "" -#: awx/api/views.py:2434 awx/api/views.py:2450 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "" -#: awx/api/views.py:2457 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "" -#: awx/api/views.py:2459 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "" -#: awx/api/views.py:2461 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "" -#: awx/api/views.py:2463 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "" -#: awx/api/views.py:2465 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "" -#: awx/api/views.py:2471 -#, python-format -msgid "Survey question %s is not a json object." -msgstr "" - -#: awx/api/views.py:2473 -#, python-format -msgid "'type' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2475 -#, python-format -msgid "'question_name' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2477 -#, python-format -msgid "'variable' missing from survey question %s." -msgstr "" - -#: awx/api/views.py:2479 -#, python-format -msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." -msgstr "" - #: awx/api/views.py:2484 #, python-format +msgid "Survey question %s is not a json object." +msgstr "" + +#: awx/api/views.py:2486 +#, python-format +msgid "'type' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2488 +#, python-format +msgid "'question_name' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2490 +#, python-format +msgid "'variable' missing from survey question %s." +msgstr "" + +#: awx/api/views.py:2492 +#, python-format +msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." +msgstr "" + +#: awx/api/views.py:2497 +#, python-format msgid "'required' missing from survey question %s." msgstr "" -#: awx/api/views.py:2569 +#: awx/api/views.py:2582 msgid "Maximum number of labels for {} reached." msgstr "" -#: awx/api/views.py:2698 +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "" -#: awx/api/views.py:2701 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "" -#: awx/api/views.py:2706 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" -#: awx/api/views.py:2713 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "" -#: awx/api/views.py:2726 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "" -#: awx/api/views.py:3055 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "" -#: awx/api/views.py:3197 awx/api/views.py:3745 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "" -#: awx/api/views.py:3229 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "" -#: awx/api/views.py:3421 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "" -#: awx/api/views.py:3468 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "" -#: awx/api/views.py:3477 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "" -#: awx/api/views.py:3486 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "" -#: awx/api/views.py:3699 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "" -#: awx/api/views.py:3897 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "" -#: awx/api/views.py:3910 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "" -#: awx/api/views.py:3955 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "" -#: awx/api/views.py:3962 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "" -#: awx/api/views.py:4078 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "" -#: awx/api/views.py:4121 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "" @@ -880,7 +894,7 @@ msgstr "" msgid "User" msgstr "" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "" @@ -948,25 +962,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:68 -#: awx/conf/tests/unit/test_settings.py:86 -#: awx/conf/tests/unit/test_settings.py:101 -#: awx/conf/tests/unit/test_settings.py:116 -#: awx/conf/tests/unit/test_settings.py:132 -#: awx/conf/tests/unit/test_settings.py:145 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:178 +#: awx/conf/tests/unit/test_settings.py:79 +#: awx/conf/tests/unit/test_settings.py:97 +#: awx/conf/tests/unit/test_settings.py:112 +#: awx/conf/tests/unit/test_settings.py:127 +#: awx/conf/tests/unit/test_settings.py:143 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 #: awx/conf/tests/unit/test_settings.py:189 -#: awx/conf/tests/unit/test_settings.py:205 -#: awx/conf/tests/unit/test_settings.py:226 -#: awx/conf/tests/unit/test_settings.py:249 -#: awx/conf/tests/unit/test_settings.py:263 -#: awx/conf/tests/unit/test_settings.py:287 -#: awx/conf/tests/unit/test_settings.py:307 -#: awx/conf/tests/unit/test_settings.py:324 -#: awx/conf/tests/unit/test_settings.py:337 -#: awx/conf/tests/unit/test_settings.py:351 -#: awx/conf/tests/unit/test_settings.py:387 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -1024,36 +1040,36 @@ msgstr "" msgid "Features not found in active license." msgstr "" -#: awx/main/access.py:525 awx/main/access.py:592 awx/main/access.py:717 -#: awx/main/access.py:987 awx/main/access.py:1222 awx/main/access.py:1619 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "" -#: awx/main/access.py:636 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "" -#: awx/main/access.py:653 awx/main/access.py:698 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "" -#: awx/main/access.py:686 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "" -#: awx/main/access.py:907 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "" -#: awx/main/access.py:920 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "" -#: awx/main/access.py:922 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "" -#: awx/main/access.py:1692 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1148,174 +1164,176 @@ msgstr "" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "" -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." msgstr "" -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "" -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "" -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "" -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" "Whitelist of paths that would otherwise be hidden to expose to isolated jobs." msgstr "" -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "" -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." msgstr "" -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." msgstr "" -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " "override this." msgstr "" -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "" -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "" -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:275 awx/main/conf.py:290 -#: awx/main/conf.py:302 awx/main/conf.py:311 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "" -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "" -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:273 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "" -#: awx/main/conf.py:274 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:283 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "" -#: awx/main/conf.py:284 +#: awx/main/conf.py:289 msgid "" "List of loggers that will send HTTP logs to the collector, these can include " "any or all of: \n" @@ -1325,11 +1343,11 @@ msgid "" "system_tracking - facts gathered from scan jobs." msgstr "" -#: awx/main/conf.py:297 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "" -#: awx/main/conf.py:298 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " "orother item found in a scan, allowing for greater search query granularity. " @@ -1337,14 +1355,22 @@ msgid "" "efficiency in fact processing." msgstr "" -#: awx/main/conf.py:309 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "" -#: awx/main/conf.py:310 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "" +#: awx/main/conf.py:323 +msgid "Cluster-wide Tower unique identifier." +msgstr "" + +#: awx/main/conf.py:324 +msgid "Useful to uniquely identify Tower instances." +msgstr "" + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "" @@ -1387,43 +1413,43 @@ msgstr "" msgid "No argument passed to %s module." msgstr "" -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:752 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:753 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:756 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:755 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:783 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:784 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:785 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:786 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:787 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:788 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "" @@ -1490,31 +1516,31 @@ msgstr "" msgid "Rackspace" msgstr "" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "" @@ -1702,7 +1728,11 @@ msgstr "" msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "" @@ -1720,237 +1750,237 @@ msgid "" "host." msgstr "" -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "" -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "" -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "" -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "" -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "" -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "" -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "" -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." msgstr "" -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "" -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:411 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "" -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." msgstr "" -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "" -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." msgstr "" -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "" @@ -1972,125 +2002,125 @@ msgstr "" msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:370 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "" -#: awx/main/models/jobs.py:373 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" -#: awx/main/models/jobs.py:439 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -#: awx/main/models/jobs.py:448 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -#: awx/main/models/jobs.py:651 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "" -#: awx/main/models/jobs.py:754 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "" -#: awx/main/models/jobs.py:757 awx/main/models/jobs.py:771 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "" -#: awx/main/models/jobs.py:758 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "" -#: awx/main/models/jobs.py:759 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "" -#: awx/main/models/jobs.py:760 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "" -#: awx/main/models/jobs.py:761 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "" -#: awx/main/models/jobs.py:762 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "" -#: awx/main/models/jobs.py:763 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "" -#: awx/main/models/jobs.py:764 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "" -#: awx/main/models/jobs.py:766 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "" -#: awx/main/models/jobs.py:767 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "" -#: awx/main/models/jobs.py:769 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "" -#: awx/main/models/jobs.py:770 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "" -#: awx/main/models/jobs.py:779 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "" -#: awx/main/models/jobs.py:1189 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1190 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1191 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" @@ -2158,11 +2188,11 @@ msgstr "" msgid "Invalid token" msgstr "" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "" -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "" @@ -2178,83 +2208,87 @@ msgstr "" msgid "Subversion" msgstr "" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +msgid "Red Hat Insights" +msgstr "" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." msgstr "" -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "" -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "" -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "" -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "" -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "" -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "" -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "" -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "" -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." msgstr "" -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "" -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "" @@ -2413,47 +2447,47 @@ msgstr "" msgid "Updating" msgstr "" -#: awx/main/models/unified_jobs.py:412 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "" -#: awx/main/models/unified_jobs.py:413 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "" -#: awx/main/models/unified_jobs.py:414 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "" -#: awx/main/models/unified_jobs.py:415 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "" -#: awx/main/models/unified_jobs.py:416 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "" -#: awx/main/models/unified_jobs.py:417 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "" -#: awx/main/models/unified_jobs.py:463 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "" -#: awx/main/models/unified_jobs.py:489 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "" -#: awx/main/models/unified_jobs.py:495 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "" -#: awx/main/models/unified_jobs.py:501 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "" -#: awx/main/models/unified_jobs.py:523 +#: awx/main/models/unified_jobs.py:526 msgid "" "A status field to indicate the state of the job if it wasn't able to run and " "capture stdout" @@ -2466,11 +2500,11 @@ msgid "" "\n" msgstr "" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "" @@ -2509,55 +2543,55 @@ msgid "" "resource such as project or inventory" msgstr "" -#: awx/main/tasks.py:180 +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "" -#: awx/main/utils/common.py:245 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:264 -#: awx/main/utils/common.py:283 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "" -#: awx/main/utils/common.py:254 awx/main/utils/common.py:292 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "" -#: awx/main/utils/common.py:296 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "" -#: awx/main/utils/common.py:314 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "" -#: awx/main/utils/common.py:320 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "" @@ -2668,195 +2702,195 @@ msgstr "" msgid "A server error has occurred." msgstr "" -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:632 msgid "London" msgstr "" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "" -#: awx/settings/defaults.py:630 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "" -#: awx/settings/defaults.py:672 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "" -#: awx/settings/defaults.py:733 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "" -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "" -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "" -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "" -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "" -#: awx/settings/defaults.py:769 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "" @@ -3110,8 +3144,8 @@ msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" #: awx/sso/conf.py:395 diff --git a/awx/locale/en-us/LC_MESSAGES/django.po b/awx/locale/en-us/LC_MESSAGES/django.po index 56771e6f92..223dcfd680 100644 --- a/awx/locale/en-us/LC_MESSAGES/django.po +++ b/awx/locale/en-us/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-31 20:58+0000\n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -66,43 +66,57 @@ msgstr "" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "" -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +msgid "Filtering on password fields is not allowed." +msgstr "" + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, python-format +msgid "Filtering on %s is not allowed." +msgstr "" + +#: awx/api/filters.py:347 +#, python-format +msgid "cannot order by field %s" +msgstr "" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "" -#: awx/api/metadata.py:50 +#: awx/api/metadata.py:51 msgid "Database ID for this {}." msgstr "" -#: awx/api/metadata.py:51 +#: awx/api/metadata.py:52 msgid "Name of this {}." msgstr "" -#: awx/api/metadata.py:52 +#: awx/api/metadata.py:53 msgid "Optional description of this {}." msgstr "" -#: awx/api/metadata.py:53 +#: awx/api/metadata.py:54 msgid "Data type for this {}." msgstr "" -#: awx/api/metadata.py:54 +#: awx/api/metadata.py:55 msgid "URL for this {}." msgstr "" -#: awx/api/metadata.py:55 +#: awx/api/metadata.py:56 msgid "Data structure with URLs of related resources." msgstr "" -#: awx/api/metadata.py:56 +#: awx/api/metadata.py:57 msgid "Data structure with name/description for related resources." msgstr "" -#: awx/api/metadata.py:57 +#: awx/api/metadata.py:58 msgid "Timestamp when this {} was created." msgstr "" -#: awx/api/metadata.py:58 +#: awx/api/metadata.py:59 msgid "Timestamp when this {} was last modified." msgstr "" @@ -111,616 +125,620 @@ msgstr "" msgid "JSON parse error - %s" msgstr "" -#: awx/api/serializers.py:250 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:254 msgid "Command" msgstr "" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "" -#: awx/api/serializers.py:658 awx/api/serializers.py:716 awx/api/views.py:3819 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " "supported for sizes over %(supported_size)d bytes" msgstr "" -#: awx/api/serializers.py:731 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "" -#: awx/api/serializers.py:733 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "" -#: awx/api/serializers.py:757 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "" -#: awx/api/serializers.py:841 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "" -#: awx/api/serializers.py:1002 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "" -#: awx/api/serializers.py:1006 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" -#: awx/api/serializers.py:1012 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "" -#: awx/api/serializers.py:1194 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "" -#: awx/api/serializers.py:1222 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "" -#: awx/api/serializers.py:1279 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "" -#: awx/api/serializers.py:1354 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" -#: awx/api/serializers.py:1407 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "" -#: awx/api/serializers.py:1411 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" -#: awx/api/serializers.py:1413 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "" -#: awx/api/serializers.py:1772 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1777 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." msgstr "" -#: awx/api/serializers.py:1782 +#: awx/api/serializers.py:1779 msgid "" "Inherit permissions from organization roles. If provided on creation, do not " "give either user or team." msgstr "" -#: awx/api/serializers.py:1798 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "" -#: awx/api/serializers.py:1811 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -#: awx/api/serializers.py:1903 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "" -#: awx/api/serializers.py:1905 awx/api/serializers.py:1907 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "" -#: awx/api/serializers.py:1909 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "" -#: awx/api/serializers.py:1975 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" -#: awx/api/serializers.py:1978 awx/main/models/jobs.py:278 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "" -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:281 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "" -#: awx/api/serializers.py:1987 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" -#: awx/api/serializers.py:2047 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "" -#: awx/api/serializers.py:2132 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "" -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "" -#: awx/api/serializers.py:2421 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" -#: awx/api/serializers.py:2426 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" -#: awx/api/serializers.py:2431 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "" -#: awx/api/serializers.py:2669 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "" -#: awx/api/serializers.py:2695 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "" -#: awx/api/serializers.py:2837 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" -#: awx/api/serializers.py:2860 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "" -#: awx/api/serializers.py:2865 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "" -#: awx/api/serializers.py:2868 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "" -#: awx/api/serializers.py:2921 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "" -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "" -#: awx/api/serializers.py:2945 +#: awx/api/serializers.py:2946 msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -#: awx/api/serializers.py:2947 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "" -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "" -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "" -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "" -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "" -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "" -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "" -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "" -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "" -#: awx/api/serializers.py:2971 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "" -#: awx/api/serializers.py:2975 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "" -#: awx/api/serializers.py:2997 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" msgstr "" -#: awx/api/serializers.py:2999 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " "associated or disassociated with object2." msgstr "" -#: awx/api/serializers.py:3002 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " "disassociate events this is the object type that object1 is being associated " "with." msgstr "" -#: awx/api/serializers.py:3005 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "" -#: awx/api/serializers.py:3112 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "" -#: awx/api/serializers.py:3114 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "" -#: awx/api/views.py:101 +#: awx/api/views.py:102 msgid "Your license does not allow use of the activity stream." msgstr "" -#: awx/api/views.py:111 +#: awx/api/views.py:112 msgid "Your license does not permit use of system tracking." msgstr "" -#: awx/api/views.py:121 +#: awx/api/views.py:122 msgid "Your license does not allow use of workflows." msgstr "" -#: awx/api/views.py:129 awx/templates/rest_framework/api.html:28 +#: awx/api/views.py:130 awx/templates/rest_framework/api.html:28 msgid "REST API" msgstr "" -#: awx/api/views.py:136 awx/templates/rest_framework/api.html:4 +#: awx/api/views.py:137 awx/templates/rest_framework/api.html:4 msgid "Ansible Tower REST API" msgstr "" -#: awx/api/views.py:152 +#: awx/api/views.py:153 msgid "Version 1" msgstr "" -#: awx/api/views.py:203 +#: awx/api/views.py:204 msgid "Ping" msgstr "" -#: awx/api/views.py:232 awx/conf/apps.py:12 +#: awx/api/views.py:233 awx/conf/apps.py:12 msgid "Configuration" msgstr "" -#: awx/api/views.py:285 +#: awx/api/views.py:286 msgid "Invalid license data" msgstr "" -#: awx/api/views.py:287 +#: awx/api/views.py:288 msgid "Missing 'eula_accepted' property" msgstr "" -#: awx/api/views.py:291 +#: awx/api/views.py:292 msgid "'eula_accepted' value is invalid" msgstr "" -#: awx/api/views.py:294 +#: awx/api/views.py:295 msgid "'eula_accepted' must be True" msgstr "" -#: awx/api/views.py:301 +#: awx/api/views.py:302 msgid "Invalid JSON" msgstr "" -#: awx/api/views.py:309 +#: awx/api/views.py:310 msgid "Invalid License" msgstr "" -#: awx/api/views.py:319 +#: awx/api/views.py:320 msgid "Invalid license" msgstr "" -#: awx/api/views.py:327 +#: awx/api/views.py:328 #, python-format msgid "Failed to remove license (%s)" msgstr "" -#: awx/api/views.py:332 +#: awx/api/views.py:333 msgid "Dashboard" msgstr "" -#: awx/api/views.py:438 +#: awx/api/views.py:439 msgid "Dashboard Jobs Graphs" msgstr "" -#: awx/api/views.py:474 +#: awx/api/views.py:475 #, python-format msgid "Unknown period \"%s\"" msgstr "" -#: awx/api/views.py:488 +#: awx/api/views.py:489 msgid "Schedules" msgstr "" -#: awx/api/views.py:507 +#: awx/api/views.py:508 msgid "Schedule Jobs List" msgstr "" -#: awx/api/views.py:717 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "" -#: awx/api/views.py:942 awx/api/views.py:1301 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "" -#: awx/api/views.py:948 awx/api/views.py:4106 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "" -#: awx/api/views.py:952 awx/api/views.py:4120 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "" -#: awx/api/views.py:959 awx/api/views.py:4112 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" msgstr "" -#: awx/api/views.py:1049 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "" -#: awx/api/views.py:1078 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "" -#: awx/api/views.py:1182 awx/api/views.py:2273 awx/api/views.py:3286 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" -#: awx/api/views.py:1259 +#: awx/api/views.py:1272 msgid "Me" msgstr "" -#: awx/api/views.py:1305 awx/api/views.py:4061 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "" -#: awx/api/views.py:1311 awx/api/views.py:4065 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "" -#: awx/api/views.py:1316 awx/api/views.py:4070 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" msgstr "" -#: awx/api/views.py:1320 awx/api/views.py:4074 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "" -#: awx/api/views.py:1418 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "" -#: awx/api/views.py:1424 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "" -#: awx/api/views.py:1572 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "" -#: awx/api/views.py:1808 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "" -#: awx/api/views.py:2128 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "" -#: awx/api/views.py:2156 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "" -#: awx/api/views.py:2164 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "" -#: awx/api/views.py:2194 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -#: awx/api/views.py:2405 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "" -#: awx/api/views.py:2425 awx/api/views.py:2441 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "" -#: awx/api/views.py:2448 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "" -#: awx/api/views.py:2450 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "" -#: awx/api/views.py:2452 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "" -#: awx/api/views.py:2454 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "" -#: awx/api/views.py:2456 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "" -#: awx/api/views.py:2462 +#: awx/api/views.py:2484 #, python-format msgid "Survey question %s is not a json object." msgstr "" -#: awx/api/views.py:2464 +#: awx/api/views.py:2486 #, python-format msgid "'type' missing from survey question %s." msgstr "" -#: awx/api/views.py:2466 +#: awx/api/views.py:2488 #, python-format msgid "'question_name' missing from survey question %s." msgstr "" -#: awx/api/views.py:2468 +#: awx/api/views.py:2490 #, python-format msgid "'variable' missing from survey question %s." msgstr "" -#: awx/api/views.py:2470 +#: awx/api/views.py:2492 #, python-format msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." msgstr "" -#: awx/api/views.py:2475 +#: awx/api/views.py:2497 #, python-format msgid "'required' missing from survey question %s." msgstr "" -#: awx/api/views.py:2686 +#: awx/api/views.py:2582 +msgid "Maximum number of labels for {} reached." +msgstr "" + +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "" -#: awx/api/views.py:2689 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "" -#: awx/api/views.py:2694 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" -#: awx/api/views.py:2701 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "" -#: awx/api/views.py:2714 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "" -#: awx/api/views.py:3043 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "" -#: awx/api/views.py:3185 awx/api/views.py:3728 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "" -#: awx/api/views.py:3217 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "" -#: awx/api/views.py:3409 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "" -#: awx/api/views.py:3451 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "" -#: awx/api/views.py:3460 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "" -#: awx/api/views.py:3469 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "" -#: awx/api/views.py:3682 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "" -#: awx/api/views.py:3874 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "" -#: awx/api/views.py:3887 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "" -#: awx/api/views.py:3932 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "" -#: awx/api/views.py:3939 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "" -#: awx/api/views.py:4055 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "" -#: awx/api/views.py:4098 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "" @@ -876,7 +894,7 @@ msgstr "" msgid "User" msgstr "" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "" @@ -920,6 +938,10 @@ msgstr "" msgid "User-Defaults" msgstr "" +#: awx/conf/registry.py:133 +msgid "This value has been set manually in a settings file." +msgstr "" + #: awx/conf/tests/unit/test_registry.py:46 #: awx/conf/tests/unit/test_registry.py:56 #: awx/conf/tests/unit/test_registry.py:72 @@ -940,18 +962,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:67 -#: awx/conf/tests/unit/test_settings.py:81 +#: awx/conf/tests/unit/test_settings.py:79 #: awx/conf/tests/unit/test_settings.py:97 -#: awx/conf/tests/unit/test_settings.py:110 +#: awx/conf/tests/unit/test_settings.py:112 #: awx/conf/tests/unit/test_settings.py:127 #: awx/conf/tests/unit/test_settings.py:143 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:183 -#: awx/conf/tests/unit/test_settings.py:197 -#: awx/conf/tests/unit/test_settings.py:221 -#: awx/conf/tests/unit/test_settings.py:241 -#: awx/conf/tests/unit/test_settings.py:258 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 +#: awx/conf/tests/unit/test_settings.py:189 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -973,72 +1004,72 @@ msgstr "" msgid "Setting Detail" msgstr "" -#: awx/main/access.py:255 +#: awx/main/access.py:266 #, python-format msgid "Bad data found in related field %s." msgstr "" -#: awx/main/access.py:296 +#: awx/main/access.py:307 msgid "License is missing." msgstr "" -#: awx/main/access.py:298 +#: awx/main/access.py:309 msgid "License has expired." msgstr "" -#: awx/main/access.py:306 +#: awx/main/access.py:317 #, python-format msgid "License count of %s instances has been reached." msgstr "" -#: awx/main/access.py:308 +#: awx/main/access.py:319 #, python-format msgid "License count of %s instances has been exceeded." msgstr "" -#: awx/main/access.py:310 +#: awx/main/access.py:321 msgid "Host count exceeds available instances." msgstr "" -#: awx/main/access.py:314 +#: awx/main/access.py:325 #, python-format msgid "Feature %s is not enabled in the active license." msgstr "" -#: awx/main/access.py:316 +#: awx/main/access.py:327 msgid "Features not found in active license." msgstr "" -#: awx/main/access.py:514 awx/main/access.py:581 awx/main/access.py:706 -#: awx/main/access.py:969 awx/main/access.py:1208 awx/main/access.py:1605 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "" -#: awx/main/access.py:625 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "" -#: awx/main/access.py:642 awx/main/access.py:687 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "" -#: awx/main/access.py:675 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "" -#: awx/main/access.py:889 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "" -#: awx/main/access.py:902 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "" -#: awx/main/access.py:904 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "" -#: awx/main/access.py:1678 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1133,174 +1164,176 @@ msgstr "" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "" -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." msgstr "" -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "" -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "" -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "" -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" "Whitelist of paths that would otherwise be hidden to expose to isolated jobs." msgstr "" -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "" -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." msgstr "" -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." msgstr "" -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " "override this." msgstr "" -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "" -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "" -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:274 awx/main/conf.py:288 -#: awx/main/conf.py:300 awx/main/conf.py:309 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "" -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "" -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:272 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "" -#: awx/main/conf.py:273 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -#: awx/main/conf.py:281 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "" -#: awx/main/conf.py:282 +#: awx/main/conf.py:289 msgid "" "List of loggers that will send HTTP logs to the collector, these can include " "any or all of: \n" @@ -1310,11 +1343,11 @@ msgid "" "system_tracking - facts gathered from scan jobs." msgstr "" -#: awx/main/conf.py:295 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "" -#: awx/main/conf.py:296 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " "orother item found in a scan, allowing for greater search query granularity. " @@ -1322,14 +1355,22 @@ msgid "" "efficiency in fact processing." msgstr "" -#: awx/main/conf.py:307 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "" -#: awx/main/conf.py:308 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "" +#: awx/main/conf.py:323 +msgid "Cluster-wide Tower unique identifier." +msgstr "" + +#: awx/main/conf.py:324 +msgid "Useful to uniquely identify Tower instances." +msgstr "" + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "" @@ -1354,7 +1395,7 @@ msgstr "" msgid "No valid inventory." msgstr "" -#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:161 +#: awx/main/models/ad_hoc_commands.py:103 awx/main/models/jobs.py:160 msgid "You must provide a machine / SSH credential." msgstr "" @@ -1372,43 +1413,43 @@ msgstr "" msgid "No argument passed to %s module." msgstr "" -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:766 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:767 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:770 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:769 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:797 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:798 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:799 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:800 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:801 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:802 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "" @@ -1475,31 +1516,31 @@ msgstr "" msgid "Rackspace" msgstr "" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "" @@ -1687,7 +1728,11 @@ msgstr "" msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "" @@ -1705,377 +1750,377 @@ msgid "" "host." msgstr "" -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "" -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "" -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "" -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "" -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "" -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "" -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "" -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "" -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "" -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." msgstr "" -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." msgstr "" -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "" -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:402 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "" -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." msgstr "" -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "" -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." msgstr "" -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "" -#: awx/main/models/jobs.py:169 +#: awx/main/models/jobs.py:168 msgid "You must provide a network credential." msgstr "" -#: awx/main/models/jobs.py:177 +#: awx/main/models/jobs.py:176 msgid "" "Must provide a credential for a cloud provider, such as Amazon Web Services " "or Rackspace." msgstr "" -#: awx/main/models/jobs.py:269 +#: awx/main/models/jobs.py:268 msgid "Job Template must provide 'inventory' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:273 +#: awx/main/models/jobs.py:272 msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -#: awx/main/models/jobs.py:362 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "" -#: awx/main/models/jobs.py:365 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" -#: awx/main/models/jobs.py:431 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "" -#: awx/main/models/jobs.py:432 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -#: awx/main/models/jobs.py:665 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "" -#: awx/main/models/jobs.py:771 awx/main/models/jobs.py:785 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "" -#: awx/main/models/jobs.py:773 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "" -#: awx/main/models/jobs.py:780 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "" -#: awx/main/models/jobs.py:781 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "" -#: awx/main/models/jobs.py:782 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "" -#: awx/main/models/jobs.py:783 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "" -#: awx/main/models/jobs.py:784 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "" -#: awx/main/models/jobs.py:786 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "" -#: awx/main/models/jobs.py:788 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "" -#: awx/main/models/jobs.py:789 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "" -#: awx/main/models/jobs.py:790 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "" -#: awx/main/models/jobs.py:791 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "" -#: awx/main/models/jobs.py:792 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "" -#: awx/main/models/jobs.py:793 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "" -#: awx/main/models/jobs.py:1203 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1204 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" -#: awx/main/models/jobs.py:1205 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" @@ -2143,11 +2188,11 @@ msgstr "" msgid "Invalid token" msgstr "" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "" -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "" @@ -2163,179 +2208,183 @@ msgstr "" msgid "Subversion" msgstr "" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +msgid "Red Hat Insights" +msgstr "" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." msgstr "" -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "" -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "" -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "" -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "" -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "" -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "" -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "" -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "" -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." msgstr "" -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "" -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "" -#: awx/main/models/rbac.py:36 +#: awx/main/models/rbac.py:37 msgid "System Administrator" msgstr "" -#: awx/main/models/rbac.py:37 +#: awx/main/models/rbac.py:38 msgid "System Auditor" msgstr "" -#: awx/main/models/rbac.py:38 +#: awx/main/models/rbac.py:39 msgid "Ad Hoc" msgstr "" -#: awx/main/models/rbac.py:39 +#: awx/main/models/rbac.py:40 msgid "Admin" msgstr "" -#: awx/main/models/rbac.py:40 +#: awx/main/models/rbac.py:41 msgid "Auditor" msgstr "" -#: awx/main/models/rbac.py:41 +#: awx/main/models/rbac.py:42 msgid "Execute" msgstr "" -#: awx/main/models/rbac.py:42 +#: awx/main/models/rbac.py:43 msgid "Member" msgstr "" -#: awx/main/models/rbac.py:43 +#: awx/main/models/rbac.py:44 msgid "Read" msgstr "" -#: awx/main/models/rbac.py:44 +#: awx/main/models/rbac.py:45 msgid "Update" msgstr "" -#: awx/main/models/rbac.py:45 +#: awx/main/models/rbac.py:46 msgid "Use" msgstr "" -#: awx/main/models/rbac.py:49 +#: awx/main/models/rbac.py:50 msgid "Can manage all aspects of the system" msgstr "" -#: awx/main/models/rbac.py:50 +#: awx/main/models/rbac.py:51 msgid "Can view all settings on the system" msgstr "" -#: awx/main/models/rbac.py:51 -msgid "May run ad hoc commands on an inventory" -msgstr "" - #: awx/main/models/rbac.py:52 -#, python-format -msgid "Can manage all aspects of the %s" +msgid "May run ad hoc commands on an inventory" msgstr "" #: awx/main/models/rbac.py:53 #, python-format -msgid "Can view all settings for the %s" +msgid "Can manage all aspects of the %s" msgstr "" #: awx/main/models/rbac.py:54 #, python-format -msgid "May run the %s" +msgid "Can view all settings for the %s" msgstr "" #: awx/main/models/rbac.py:55 #, python-format -msgid "User is a member of the %s" +msgid "May run the %s" msgstr "" #: awx/main/models/rbac.py:56 #, python-format -msgid "May view settings for the %s" +msgid "User is a member of the %s" msgstr "" #: awx/main/models/rbac.py:57 +#, python-format +msgid "May view settings for the %s" +msgstr "" + +#: awx/main/models/rbac.py:58 msgid "" "May update project or inventory or group using the configured source update " "system" msgstr "" -#: awx/main/models/rbac.py:58 +#: awx/main/models/rbac.py:59 #, python-format msgid "Can use the %s in a job template" msgstr "" -#: awx/main/models/rbac.py:122 +#: awx/main/models/rbac.py:123 msgid "roles" msgstr "" -#: awx/main/models/rbac.py:438 +#: awx/main/models/rbac.py:435 msgid "role_ancestors" msgstr "" @@ -2398,47 +2447,47 @@ msgstr "" msgid "Updating" msgstr "" -#: awx/main/models/unified_jobs.py:403 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "" -#: awx/main/models/unified_jobs.py:404 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "" -#: awx/main/models/unified_jobs.py:405 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "" -#: awx/main/models/unified_jobs.py:406 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "" -#: awx/main/models/unified_jobs.py:407 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "" -#: awx/main/models/unified_jobs.py:408 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "" -#: awx/main/models/unified_jobs.py:454 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "" -#: awx/main/models/unified_jobs.py:480 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "" -#: awx/main/models/unified_jobs.py:486 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "" -#: awx/main/models/unified_jobs.py:492 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "" -#: awx/main/models/unified_jobs.py:514 +#: awx/main/models/unified_jobs.py:526 msgid "" "A status field to indicate the state of the job if it wasn't able to run and " "capture stdout" @@ -2451,11 +2500,11 @@ msgid "" "\n" msgstr "" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "" @@ -2482,61 +2531,67 @@ msgstr "" msgid "Error sending notification webhook: {}" msgstr "" -#: awx/main/scheduler/__init__.py:130 +#: awx/main/scheduler/__init__.py:127 msgid "" "Job spawned from workflow could not start because it was not in the right " "state or required manual credentials" msgstr "" -#: awx/main/tasks.py:180 +#: awx/main/scheduler/__init__.py:131 +msgid "" +"Job spawned from workflow could not start because it was missing a related " +"resource such as project or inventory" +msgstr "" + +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "" -#: awx/main/utils/common.py:243 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "" -#: awx/main/utils/common.py:250 awx/main/utils/common.py:262 -#: awx/main/utils/common.py:281 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:290 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "" -#: awx/main/utils/common.py:292 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "" -#: awx/main/utils/common.py:312 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "" -#: awx/main/utils/common.py:318 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "" @@ -2647,195 +2702,195 @@ msgstr "" msgid "A server error has occurred." msgstr "" -#: awx/settings/defaults.py:624 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "" -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:632 msgid "London" msgstr "" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "" -#: awx/settings/defaults.py:656 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "" -#: awx/settings/defaults.py:720 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "" -#: awx/settings/defaults.py:756 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "" -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "" -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "" -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "" -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "" @@ -2952,10 +3007,10 @@ msgid "" msgstr "" #: awx/sso/conf.py:181 awx/sso/conf.py:199 awx/sso/conf.py:211 -#: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:258 -#: awx/sso/conf.py:280 awx/sso/conf.py:296 awx/sso/conf.py:315 -#: awx/sso/conf.py:332 awx/sso/conf.py:349 awx/sso/conf.py:365 -#: awx/sso/conf.py:382 awx/sso/conf.py:420 awx/sso/conf.py:461 +#: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:259 +#: awx/sso/conf.py:281 awx/sso/conf.py:297 awx/sso/conf.py:316 +#: awx/sso/conf.py:333 awx/sso/conf.py:350 awx/sso/conf.py:366 +#: awx/sso/conf.py:383 awx/sso/conf.py:421 awx/sso/conf.py:462 msgid "LDAP" msgstr "" @@ -3000,11 +3055,11 @@ msgid "" "values that can be set." msgstr "" -#: awx/sso/conf.py:251 +#: awx/sso/conf.py:252 msgid "LDAP User Search" msgstr "" -#: awx/sso/conf.py:252 +#: awx/sso/conf.py:253 msgid "" "LDAP search query to find users. Any user that matches the given pattern " "will be able to login to Tower. The user should also be mapped into an " @@ -3013,11 +3068,11 @@ msgid "" "possible. See python-ldap documentation as linked at the top of this section." msgstr "" -#: awx/sso/conf.py:274 +#: awx/sso/conf.py:275 msgid "LDAP User DN Template" msgstr "" -#: awx/sso/conf.py:275 +#: awx/sso/conf.py:276 msgid "" "Alternative to user search, if user DNs are all of the same format. This " "approach will be more efficient for user lookups than searching if it is " @@ -3025,11 +3080,11 @@ msgid "" "will be used instead of AUTH_LDAP_USER_SEARCH." msgstr "" -#: awx/sso/conf.py:290 +#: awx/sso/conf.py:291 msgid "LDAP User Attribute Map" msgstr "" -#: awx/sso/conf.py:291 +#: awx/sso/conf.py:292 msgid "" "Mapping of LDAP user schema to Tower API user attributes (key is user " "attribute name, value is LDAP attribute name). The default setting is valid " @@ -3037,67 +3092,67 @@ msgid "" "change the values (not the keys) of the dictionary/hash-table." msgstr "" -#: awx/sso/conf.py:310 +#: awx/sso/conf.py:311 msgid "LDAP Group Search" msgstr "" -#: awx/sso/conf.py:311 +#: awx/sso/conf.py:312 msgid "" "Users in Tower are mapped to organizations based on their membership in LDAP " "groups. This setting defines the LDAP search query to find groups. Note that " "this, unlike the user search above, does not support LDAPSearchUnion." msgstr "" -#: awx/sso/conf.py:328 +#: awx/sso/conf.py:329 msgid "LDAP Group Type" msgstr "" -#: awx/sso/conf.py:329 +#: awx/sso/conf.py:330 msgid "" "The group type may need to be changed based on the type of the LDAP server. " "Values are listed at: http://pythonhosted.org/django-auth-ldap/groups." "html#types-of-groups" msgstr "" -#: awx/sso/conf.py:344 +#: awx/sso/conf.py:345 msgid "LDAP Require Group" msgstr "" -#: awx/sso/conf.py:345 +#: awx/sso/conf.py:346 msgid "" "Group DN required to login. If specified, user must be a member of this " "group to login via LDAP. If not set, everyone in LDAP that matches the user " "search will be able to login via Tower. Only one require group is supported." msgstr "" -#: awx/sso/conf.py:361 +#: awx/sso/conf.py:362 msgid "LDAP Deny Group" msgstr "" -#: awx/sso/conf.py:362 +#: awx/sso/conf.py:363 msgid "" "Group DN denied from login. If specified, user will not be allowed to login " "if a member of this group. Only one deny group is supported." msgstr "" -#: awx/sso/conf.py:375 +#: awx/sso/conf.py:376 msgid "LDAP User Flags By Group" msgstr "" -#: awx/sso/conf.py:376 +#: awx/sso/conf.py:377 msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." -msgstr "" - -#: awx/sso/conf.py:394 -msgid "LDAP Organization Map" +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" #: awx/sso/conf.py:395 +msgid "LDAP Organization Map" +msgstr "" + +#: awx/sso/conf.py:396 msgid "" "Mapping between organization admins/users and LDAP groups. This controls " "what users are placed into what Tower organizations relative to their LDAP " @@ -3124,11 +3179,11 @@ msgid "" "remove_admins." msgstr "" -#: awx/sso/conf.py:443 +#: awx/sso/conf.py:444 msgid "LDAP Team Map" msgstr "" -#: awx/sso/conf.py:444 +#: awx/sso/conf.py:445 msgid "" "Mapping between team members (users) and LDAP groups. Keys are team names " "(will be created if not present). Values are dictionaries of options for " @@ -3147,88 +3202,88 @@ msgid "" "of the given groups will be removed from the team." msgstr "" -#: awx/sso/conf.py:487 +#: awx/sso/conf.py:488 msgid "RADIUS Server" msgstr "" -#: awx/sso/conf.py:488 +#: awx/sso/conf.py:489 msgid "" "Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " "setting is empty." msgstr "" -#: awx/sso/conf.py:490 awx/sso/conf.py:504 awx/sso/conf.py:516 +#: awx/sso/conf.py:491 awx/sso/conf.py:505 awx/sso/conf.py:517 msgid "RADIUS" msgstr "" -#: awx/sso/conf.py:502 +#: awx/sso/conf.py:503 msgid "RADIUS Port" msgstr "" -#: awx/sso/conf.py:503 +#: awx/sso/conf.py:504 msgid "Port of RADIUS server." msgstr "" -#: awx/sso/conf.py:514 +#: awx/sso/conf.py:515 msgid "RADIUS Secret" msgstr "" -#: awx/sso/conf.py:515 +#: awx/sso/conf.py:516 msgid "Shared secret for authenticating to RADIUS server." msgstr "" -#: awx/sso/conf.py:531 +#: awx/sso/conf.py:532 msgid "Google OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:532 +#: awx/sso/conf.py:533 msgid "" "Create a project at https://console.developers.google.com/ to obtain an " "OAuth2 key and secret for a web application. Ensure that the Google+ API is " "enabled. Provide this URL as the callback URL for your application." msgstr "" -#: awx/sso/conf.py:536 awx/sso/conf.py:547 awx/sso/conf.py:558 -#: awx/sso/conf.py:571 awx/sso/conf.py:585 awx/sso/conf.py:597 -#: awx/sso/conf.py:609 +#: awx/sso/conf.py:537 awx/sso/conf.py:548 awx/sso/conf.py:559 +#: awx/sso/conf.py:572 awx/sso/conf.py:586 awx/sso/conf.py:598 +#: awx/sso/conf.py:610 msgid "Google OAuth2" msgstr "" -#: awx/sso/conf.py:545 +#: awx/sso/conf.py:546 msgid "Google OAuth2 Key" msgstr "" -#: awx/sso/conf.py:546 +#: awx/sso/conf.py:547 msgid "" "The OAuth2 key from your web application at https://console.developers." "google.com/." msgstr "" -#: awx/sso/conf.py:556 +#: awx/sso/conf.py:557 msgid "Google OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:557 +#: awx/sso/conf.py:558 msgid "" "The OAuth2 secret from your web application at https://console.developers." "google.com/." msgstr "" -#: awx/sso/conf.py:568 +#: awx/sso/conf.py:569 msgid "Google OAuth2 Whitelisted Domains" msgstr "" -#: awx/sso/conf.py:569 +#: awx/sso/conf.py:570 msgid "" "Update this setting to restrict the domains who are allowed to login using " "Google OAuth2." msgstr "" -#: awx/sso/conf.py:580 +#: awx/sso/conf.py:581 msgid "Google OAuth2 Extra Arguments" msgstr "" -#: awx/sso/conf.py:581 +#: awx/sso/conf.py:582 msgid "" "Extra arguments for Google OAuth2 login. When only allowing a single domain " "to authenticate, set to `{\"hd\": \"yourdomain.com\"}` and Google will not " @@ -3236,60 +3291,60 @@ msgid "" "Google accounts." msgstr "" -#: awx/sso/conf.py:595 +#: awx/sso/conf.py:596 msgid "Google OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:607 +#: awx/sso/conf.py:608 msgid "Google OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:623 +#: awx/sso/conf.py:624 msgid "GitHub OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:624 +#: awx/sso/conf.py:625 msgid "" "Create a developer application at https://github.com/settings/developers to " "obtain an OAuth2 key (Client ID) and secret (Client Secret). Provide this " "URL as the callback URL for your application." msgstr "" -#: awx/sso/conf.py:628 awx/sso/conf.py:639 awx/sso/conf.py:649 -#: awx/sso/conf.py:661 awx/sso/conf.py:673 +#: awx/sso/conf.py:629 awx/sso/conf.py:640 awx/sso/conf.py:650 +#: awx/sso/conf.py:662 awx/sso/conf.py:674 msgid "GitHub OAuth2" msgstr "" -#: awx/sso/conf.py:637 +#: awx/sso/conf.py:638 msgid "GitHub OAuth2 Key" msgstr "" -#: awx/sso/conf.py:638 +#: awx/sso/conf.py:639 msgid "The OAuth2 key (Client ID) from your GitHub developer application." msgstr "" -#: awx/sso/conf.py:647 +#: awx/sso/conf.py:648 msgid "GitHub OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:648 +#: awx/sso/conf.py:649 msgid "" "The OAuth2 secret (Client Secret) from your GitHub developer application." msgstr "" -#: awx/sso/conf.py:659 +#: awx/sso/conf.py:660 msgid "GitHub OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:671 +#: awx/sso/conf.py:672 msgid "GitHub OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:687 +#: awx/sso/conf.py:688 msgid "GitHub Organization OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:688 awx/sso/conf.py:763 +#: awx/sso/conf.py:689 awx/sso/conf.py:764 msgid "" "Create an organization-owned application at https://github.com/organizations/" "/settings/applications and obtain an OAuth2 key (Client ID) and " @@ -3297,86 +3352,86 @@ msgid "" "application." msgstr "" -#: awx/sso/conf.py:692 awx/sso/conf.py:703 awx/sso/conf.py:713 -#: awx/sso/conf.py:725 awx/sso/conf.py:736 awx/sso/conf.py:748 +#: awx/sso/conf.py:693 awx/sso/conf.py:704 awx/sso/conf.py:714 +#: awx/sso/conf.py:726 awx/sso/conf.py:737 awx/sso/conf.py:749 msgid "GitHub Organization OAuth2" msgstr "" -#: awx/sso/conf.py:701 +#: awx/sso/conf.py:702 msgid "GitHub Organization OAuth2 Key" msgstr "" -#: awx/sso/conf.py:702 awx/sso/conf.py:777 +#: awx/sso/conf.py:703 awx/sso/conf.py:778 msgid "The OAuth2 key (Client ID) from your GitHub organization application." msgstr "" -#: awx/sso/conf.py:711 +#: awx/sso/conf.py:712 msgid "GitHub Organization OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:712 awx/sso/conf.py:787 +#: awx/sso/conf.py:713 awx/sso/conf.py:788 msgid "" "The OAuth2 secret (Client Secret) from your GitHub organization application." msgstr "" -#: awx/sso/conf.py:722 +#: awx/sso/conf.py:723 msgid "GitHub Organization Name" msgstr "" -#: awx/sso/conf.py:723 +#: awx/sso/conf.py:724 msgid "" "The name of your GitHub organization, as used in your organization's URL: " "https://github.com//." msgstr "" -#: awx/sso/conf.py:734 +#: awx/sso/conf.py:735 msgid "GitHub Organization OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:746 +#: awx/sso/conf.py:747 msgid "GitHub Organization OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:762 +#: awx/sso/conf.py:763 msgid "GitHub Team OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:767 awx/sso/conf.py:778 awx/sso/conf.py:788 -#: awx/sso/conf.py:800 awx/sso/conf.py:811 awx/sso/conf.py:823 +#: awx/sso/conf.py:768 awx/sso/conf.py:779 awx/sso/conf.py:789 +#: awx/sso/conf.py:801 awx/sso/conf.py:812 awx/sso/conf.py:824 msgid "GitHub Team OAuth2" msgstr "" -#: awx/sso/conf.py:776 +#: awx/sso/conf.py:777 msgid "GitHub Team OAuth2 Key" msgstr "" -#: awx/sso/conf.py:786 +#: awx/sso/conf.py:787 msgid "GitHub Team OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:797 +#: awx/sso/conf.py:798 msgid "GitHub Team ID" msgstr "" -#: awx/sso/conf.py:798 +#: awx/sso/conf.py:799 msgid "" "Find the numeric team ID using the Github API: http://fabian-kostadinov." "github.io/2015/01/16/how-to-find-a-github-team-id/." msgstr "" -#: awx/sso/conf.py:809 +#: awx/sso/conf.py:810 msgid "GitHub Team OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:821 +#: awx/sso/conf.py:822 msgid "GitHub Team OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:837 +#: awx/sso/conf.py:838 msgid "Azure AD OAuth2 Callback URL" msgstr "" -#: awx/sso/conf.py:838 +#: awx/sso/conf.py:839 msgid "" "Register an Azure AD application as described by https://msdn.microsoft.com/" "en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " @@ -3384,118 +3439,118 @@ msgid "" "application." msgstr "" -#: awx/sso/conf.py:842 awx/sso/conf.py:853 awx/sso/conf.py:863 -#: awx/sso/conf.py:875 awx/sso/conf.py:887 +#: awx/sso/conf.py:843 awx/sso/conf.py:854 awx/sso/conf.py:864 +#: awx/sso/conf.py:876 awx/sso/conf.py:888 msgid "Azure AD OAuth2" msgstr "" -#: awx/sso/conf.py:851 +#: awx/sso/conf.py:852 msgid "Azure AD OAuth2 Key" msgstr "" -#: awx/sso/conf.py:852 +#: awx/sso/conf.py:853 msgid "The OAuth2 key (Client ID) from your Azure AD application." msgstr "" -#: awx/sso/conf.py:861 +#: awx/sso/conf.py:862 msgid "Azure AD OAuth2 Secret" msgstr "" -#: awx/sso/conf.py:862 +#: awx/sso/conf.py:863 msgid "The OAuth2 secret (Client Secret) from your Azure AD application." msgstr "" -#: awx/sso/conf.py:873 +#: awx/sso/conf.py:874 msgid "Azure AD OAuth2 Organization Map" msgstr "" -#: awx/sso/conf.py:885 +#: awx/sso/conf.py:886 msgid "Azure AD OAuth2 Team Map" msgstr "" -#: awx/sso/conf.py:906 +#: awx/sso/conf.py:907 msgid "SAML Service Provider Callback URL" msgstr "" -#: awx/sso/conf.py:907 +#: awx/sso/conf.py:908 msgid "" "Register Tower as a service provider (SP) with each identity provider (IdP) " "you have configured. Provide your SP Entity ID and this callback URL for " "your application." msgstr "" -#: awx/sso/conf.py:910 awx/sso/conf.py:924 awx/sso/conf.py:937 -#: awx/sso/conf.py:951 awx/sso/conf.py:965 awx/sso/conf.py:983 -#: awx/sso/conf.py:1005 awx/sso/conf.py:1024 awx/sso/conf.py:1044 -#: awx/sso/conf.py:1078 awx/sso/conf.py:1091 +#: awx/sso/conf.py:911 awx/sso/conf.py:925 awx/sso/conf.py:938 +#: awx/sso/conf.py:952 awx/sso/conf.py:966 awx/sso/conf.py:984 +#: awx/sso/conf.py:1006 awx/sso/conf.py:1025 awx/sso/conf.py:1045 +#: awx/sso/conf.py:1079 awx/sso/conf.py:1092 msgid "SAML" msgstr "" -#: awx/sso/conf.py:921 +#: awx/sso/conf.py:922 msgid "SAML Service Provider Metadata URL" msgstr "" -#: awx/sso/conf.py:922 +#: awx/sso/conf.py:923 msgid "" "If your identity provider (IdP) allows uploading an XML metadata file, you " "can download one from this URL." msgstr "" -#: awx/sso/conf.py:934 +#: awx/sso/conf.py:935 msgid "SAML Service Provider Entity ID" msgstr "" -#: awx/sso/conf.py:935 +#: awx/sso/conf.py:936 msgid "" "The application-defined unique identifier used as the audience of the SAML " "service provider (SP) configuration." msgstr "" -#: awx/sso/conf.py:948 +#: awx/sso/conf.py:949 msgid "SAML Service Provider Public Certificate" msgstr "" -#: awx/sso/conf.py:949 +#: awx/sso/conf.py:950 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "certificate content here." msgstr "" -#: awx/sso/conf.py:962 +#: awx/sso/conf.py:963 msgid "SAML Service Provider Private Key" msgstr "" -#: awx/sso/conf.py:963 +#: awx/sso/conf.py:964 msgid "" "Create a keypair for Tower to use as a service provider (SP) and include the " "private key content here." msgstr "" -#: awx/sso/conf.py:981 +#: awx/sso/conf.py:982 msgid "SAML Service Provider Organization Info" msgstr "" -#: awx/sso/conf.py:982 +#: awx/sso/conf.py:983 msgid "Configure this setting with information about your app." msgstr "" -#: awx/sso/conf.py:1003 +#: awx/sso/conf.py:1004 msgid "SAML Service Provider Technical Contact" msgstr "" -#: awx/sso/conf.py:1004 awx/sso/conf.py:1023 +#: awx/sso/conf.py:1005 awx/sso/conf.py:1024 msgid "Configure this setting with your contact information." msgstr "" -#: awx/sso/conf.py:1022 +#: awx/sso/conf.py:1023 msgid "SAML Service Provider Support Contact" msgstr "" -#: awx/sso/conf.py:1037 +#: awx/sso/conf.py:1038 msgid "SAML Enabled Identity Providers" msgstr "" -#: awx/sso/conf.py:1038 +#: awx/sso/conf.py:1039 msgid "" "Configure the Entity ID, SSO URL and certificate for each identity provider " "(IdP) in use. Multiple SAML IdPs are supported. Some IdPs may provide user " @@ -3504,11 +3559,11 @@ msgid "" "Attribute names may be overridden for each IdP." msgstr "" -#: awx/sso/conf.py:1076 +#: awx/sso/conf.py:1077 msgid "SAML Organization Map" msgstr "" -#: awx/sso/conf.py:1089 +#: awx/sso/conf.py:1090 msgid "SAML Team Map" msgstr "" @@ -3731,7 +3786,7 @@ msgstr "" #: awx/ui/conf.py:49 msgid "" "To set up a custom logo, provide a file that you create. For the custom logo " -"to look its best, use a `.png` file with a transparent background. GIF, PNG " +"to look its best, use a .png file with a transparent background. GIF, PNG " "and JPEG formats are supported." msgstr "" diff --git a/awx/locale/es/LC_MESSAGES/django.po b/awx/locale/es/LC_MESSAGES/django.po index 1d565f426d..2e90aa91c1 100644 --- a/awx/locale/es/LC_MESSAGES/django.po +++ b/awx/locale/es/LC_MESSAGES/django.po @@ -2,21 +2,22 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# Carlos Munoz , 2017. #zanata +# mkim , 2017. #zanata msgid "" msgstr "" -"Project-Id-Version: ANSIBLE TOWER 0.1\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-09 14:32+0000\n" -"PO-Revision-Date: 2017-03-16 16:58+0100\n" -"Last-Translator: Alberto Gonzalez \n" +"POT-Creation-Date: 2017-04-10 23:58+0000\n" +"PO-Revision-Date: 2017-04-20 03:08+0000\n" +"Last-Translator: Carlos Munoz \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.6.10\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.1.1\n" #: awx/api/authentication.py:67 msgid "Invalid token header. No credentials provided." @@ -72,7 +73,22 @@ msgstr "Habilitar autentificación básica HTTP" msgid "Enable HTTP Basic Auth for the API Browser." msgstr "Habilitar autentificación básica HTTP para la navegación API." -#: awx/api/generics.py:466 +#: awx/api/filters.py:112 +#, fuzzy +msgid "Filtering on password fields is not allowed." +msgstr "Filtrar sobre campos de contraseña no está permitido." + +#: awx/api/filters.py:124 awx/api/filters.py:126 +#, fuzzy, python-format +msgid "Filtering on %s is not allowed." +msgstr "Filtrar sobre %s no está permitido." + +#: awx/api/filters.py:347 +#, fuzzy, python-format +msgid "cannot order by field %s" +msgstr "no se puede ordenar por el campo %s" + +#: awx/api/generics.py:497 msgid "\"id\" is required to disassociate" msgstr "\"id\" es necesario para desasociar" @@ -118,35 +134,35 @@ msgstr "Fecha y hora cuando este {} fue modificado más recientemente." msgid "JSON parse error - %s" msgstr "Error analizando JSON - %s" -#: awx/api/serializers.py:251 +#: awx/api/serializers.py:253 msgid "Playbook Run" msgstr "Ejecutar Playbook" -#: awx/api/serializers.py:252 +#: awx/api/serializers.py:254 msgid "Command" msgstr "Comando" -#: awx/api/serializers.py:253 +#: awx/api/serializers.py:255 msgid "SCM Update" msgstr "Actualización SCM" -#: awx/api/serializers.py:254 +#: awx/api/serializers.py:256 msgid "Inventory Sync" msgstr "Sincronizar inventario" -#: awx/api/serializers.py:255 +#: awx/api/serializers.py:257 msgid "Management Job" msgstr "Trabajo de gestión" -#: awx/api/serializers.py:256 +#: awx/api/serializers.py:258 msgid "Workflow Job" msgstr "Tarea en flujo de trabajo" -#: awx/api/serializers.py:257 +#: awx/api/serializers.py:259 msgid "Workflow Template" msgstr "Plantilla de flujo de trabajo" -#: awx/api/serializers.py:653 awx/api/serializers.py:711 awx/api/views.py:3842 +#: awx/api/serializers.py:655 awx/api/serializers.py:713 awx/api/views.py:3863 #, python-format msgid "" "Standard Output too large to display (%(text_size)d bytes), only download " @@ -156,73 +172,73 @@ msgstr "" "sólo está soportada la descarga para tamaños por encima de " "%(supported_size)d bytes" -#: awx/api/serializers.py:726 +#: awx/api/serializers.py:728 msgid "Write-only field used to change the password." msgstr "Campo de sólo escritura utilizado para cambiar la contraseña." -#: awx/api/serializers.py:728 +#: awx/api/serializers.py:730 msgid "Set if the account is managed by an external service" msgstr "Establecer si la cuenta es administrada por un servicio externo" -#: awx/api/serializers.py:752 +#: awx/api/serializers.py:754 msgid "Password required for new User." msgstr "Contraseña requerida para un usuario nuevo." -#: awx/api/serializers.py:836 +#: awx/api/serializers.py:838 #, python-format msgid "Unable to change %s on user managed by LDAP." msgstr "Incapaz de cambiar %s en usuario gestionado por LDAP." -#: awx/api/serializers.py:997 +#: awx/api/serializers.py:999 msgid "Organization is missing" msgstr "Organización no encontrada." -#: awx/api/serializers.py:1001 +#: awx/api/serializers.py:1003 msgid "Update options must be set to false for manual projects." msgstr "" "Opciones de actualización deben ser establecidas a false para proyectos " "manuales." -#: awx/api/serializers.py:1007 +#: awx/api/serializers.py:1009 msgid "Array of playbooks available within this project." msgstr "Colección de playbooks disponibles dentro de este proyecto." -#: awx/api/serializers.py:1189 +#: awx/api/serializers.py:1191 #, python-format msgid "Invalid port specification: %s" msgstr "Especificación de puerto inválido: %s" -#: awx/api/serializers.py:1217 awx/main/validators.py:193 +#: awx/api/serializers.py:1219 awx/main/validators.py:193 msgid "Must be valid JSON or YAML." msgstr "Debe ser un válido JSON o YAML." -#: awx/api/serializers.py:1274 +#: awx/api/serializers.py:1276 msgid "Invalid group name." msgstr "Nombre de grupo inválido." -#: awx/api/serializers.py:1349 +#: awx/api/serializers.py:1348 msgid "" "Script must begin with a hashbang sequence: i.e.... #!/usr/bin/env python" msgstr "" "El script debe empezar con una secuencia hashbang, p.e.... #!/usr/bin/env " "python" -#: awx/api/serializers.py:1402 +#: awx/api/serializers.py:1401 msgid "If 'source' is 'custom', 'source_script' must be provided." msgstr "Si 'source' es 'custom', 'source_script' debe ser especificado." -#: awx/api/serializers.py:1406 +#: awx/api/serializers.py:1405 msgid "" "The 'source_script' does not belong to the same organization as the " "inventory." msgstr "" "El 'source_script' no pertenece a la misma organización que el inventario." -#: awx/api/serializers.py:1408 +#: awx/api/serializers.py:1407 msgid "'source_script' doesn't exist." msgstr "'source_script' no existe." -#: awx/api/serializers.py:1770 +#: awx/api/serializers.py:1769 msgid "" "Write-only field used to add user to owner role. If provided, do not give " "either team or organization. Only valid for creation." @@ -230,7 +246,7 @@ msgstr "" "Campo de sólo escritura utilizado para añadir usuario a rol de propietario. " "Si se indica, no otorgar equipo u organización. Sólo válido para creación." -#: awx/api/serializers.py:1775 +#: awx/api/serializers.py:1774 msgid "" "Write-only field used to add team to owner role. If provided, do not give " "either user or organization. Only valid for creation." @@ -238,182 +254,183 @@ msgstr "" "Campo de sólo escritura para añadir equipo a un rol propietario.Si se " "indica, no otorgar usuario u organización. Sólo válido para creación." -#: awx/api/serializers.py:1780 +#: awx/api/serializers.py:1779 msgid "" -"Inherit permissions from organization roles. If provided on creation, do not " -"give either user or team." +"Inherit permissions from organization roles. If provided on creation, do not" +" give either user or team." msgstr "" "Permisos heredados desde roles de organización. Si se indica, no otorgar " "usuario o equipo." -#: awx/api/serializers.py:1796 +#: awx/api/serializers.py:1795 msgid "Missing 'user', 'team', or 'organization'." msgstr "No encontrado 'user', 'team' u 'organization'" -#: awx/api/serializers.py:1809 +#: awx/api/serializers.py:1808 msgid "" "Credential organization must be set and match before assigning to a team" msgstr "" -"Credenciales de organización deben ser establecidas y coincidir antes de ser " -"asignadas a un equipo" +"Credenciales de organización deben ser establecidas y coincidir antes de ser" +" asignadas a un equipo" -#: awx/api/serializers.py:1905 +#: awx/api/serializers.py:1904 msgid "This field is required." msgstr "Este campo es obligatorio." -#: awx/api/serializers.py:1907 awx/api/serializers.py:1909 +#: awx/api/serializers.py:1906 awx/api/serializers.py:1908 msgid "Playbook not found for project." msgstr "Playbook no encontrado para el proyecto." -#: awx/api/serializers.py:1911 +#: awx/api/serializers.py:1910 msgid "Must select playbook for project." msgstr "Debe seleccionar un playbook para el proyecto." -#: awx/api/serializers.py:1977 +#: awx/api/serializers.py:1976 msgid "Must either set a default value or ask to prompt on launch." msgstr "" "Debe establecer un valor por defecto o preguntar por valor al ejecutar." -#: awx/api/serializers.py:1980 awx/main/models/jobs.py:277 +#: awx/api/serializers.py:1979 awx/main/models/jobs.py:277 msgid "Scan jobs must be assigned a fixed inventory." msgstr "Trabajos de escaneo deben ser asignados a un inventario fijo." -#: awx/api/serializers.py:1982 awx/main/models/jobs.py:280 +#: awx/api/serializers.py:1981 awx/main/models/jobs.py:280 msgid "Job types 'run' and 'check' must have assigned a project." msgstr "Tipos de trabajo 'run' y 'check' deben tener asignado un proyecto." -#: awx/api/serializers.py:1989 +#: awx/api/serializers.py:1988 msgid "Survey Enabled cannot be used with scan jobs." msgstr "" "Un cuestionario activado no puede ser utilizado con trabajos de escaneo." -#: awx/api/serializers.py:2049 +#: awx/api/serializers.py:2048 msgid "Invalid job template." msgstr "Plantilla de trabajo inválida" -#: awx/api/serializers.py:2134 +#: awx/api/serializers.py:2133 msgid "Credential not found or deleted." msgstr "Credencial no encontrado o eliminado." -#: awx/api/serializers.py:2136 +#: awx/api/serializers.py:2135 msgid "Job Template Project is missing or undefined." msgstr "Proyecto en la plantilla de trabajo no encontrado o no definido." -#: awx/api/serializers.py:2138 +#: awx/api/serializers.py:2137 msgid "Job Template Inventory is missing or undefined." msgstr "Inventario en la plantilla de trabajo no encontrado o no definido." -#: awx/api/serializers.py:2423 +#: awx/api/serializers.py:2422 #, python-format msgid "%(job_type)s is not a valid job type. The choices are %(choices)s." msgstr "" "j%(job_type)s no es un tipo de trabajo válido. Las opciones son %(choices)s." -#: awx/api/serializers.py:2428 +#: awx/api/serializers.py:2427 msgid "Workflow job template is missing during creation." msgstr "" "Plantilla de tarea en el flujo de trabajo no encontrada durante la creación." -#: awx/api/serializers.py:2433 +#: awx/api/serializers.py:2432 #, python-format msgid "Cannot nest a %s inside a WorkflowJobTemplate" msgstr "No es posible anidar un %s dentro de un WorkflowJobTemplate" -#: awx/api/serializers.py:2671 +#: awx/api/serializers.py:2670 #, python-format msgid "Job Template '%s' is missing or undefined." msgstr "Plantilla de trabajo '%s' no encontrada o no definida." -#: awx/api/serializers.py:2697 +#: awx/api/serializers.py:2696 msgid "Must be a valid JSON or YAML dictionary." msgstr "Debe ser un JSON válido o un diccionario YAML." -#: awx/api/serializers.py:2839 +#: awx/api/serializers.py:2838 msgid "" "Missing required fields for Notification Configuration: notification_type" msgstr "" "Campos obligatorios no definidos para la configuración de notificación: " "notification_type" -#: awx/api/serializers.py:2862 +#: awx/api/serializers.py:2861 msgid "No values specified for field '{}'" msgstr "Ningún valor especificado para el campo '{}'" -#: awx/api/serializers.py:2867 +#: awx/api/serializers.py:2866 msgid "Missing required fields for Notification Configuration: {}." msgstr "Campos no definidos para la configuración de notificación: {}." -#: awx/api/serializers.py:2870 +#: awx/api/serializers.py:2869 msgid "Configuration field '{}' incorrect type, expected {}." msgstr "Tipo incorrecto en la configuración del campo '{} ', esperado {}." -#: awx/api/serializers.py:2923 +#: awx/api/serializers.py:2922 msgid "Inventory Source must be a cloud resource." msgstr "Fuente del inventario debe ser un recurso cloud." -#: awx/api/serializers.py:2925 +#: awx/api/serializers.py:2924 msgid "Manual Project can not have a schedule set." msgstr "Un proyecto manual no puede tener una programación establecida." -#: awx/api/serializers.py:2947 -msgid "DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" +#: awx/api/serializers.py:2946 +msgid "" +"DTSTART required in rrule. Value should match: DTSTART:YYYYMMDDTHHMMSSZ" msgstr "" -"DTSTART necesario en 'rrule'. El valor debe coincidir: DTSTART:" -"YYYYMMDDTHHMMSSZ" +"DTSTART necesario en 'rrule'. El valor debe coincidir: " +"DTSTART:YYYYMMDDTHHMMSSZ" -#: awx/api/serializers.py:2949 +#: awx/api/serializers.py:2948 msgid "Multiple DTSTART is not supported." msgstr "Múltiple DTSTART no está soportado." -#: awx/api/serializers.py:2951 +#: awx/api/serializers.py:2950 msgid "RRULE require in rrule." msgstr "RRULE requerido en rrule" -#: awx/api/serializers.py:2953 +#: awx/api/serializers.py:2952 msgid "Multiple RRULE is not supported." msgstr "Múltiple RRULE no está soportado." -#: awx/api/serializers.py:2955 +#: awx/api/serializers.py:2954 msgid "INTERVAL required in rrule." msgstr "INTERVAL requerido en 'rrule'." -#: awx/api/serializers.py:2957 +#: awx/api/serializers.py:2956 msgid "TZID is not supported." msgstr "TZID no está soportado." -#: awx/api/serializers.py:2959 +#: awx/api/serializers.py:2958 msgid "SECONDLY is not supported." msgstr "SECONDLY no está soportado." -#: awx/api/serializers.py:2961 +#: awx/api/serializers.py:2960 msgid "Multiple BYMONTHDAYs not supported." msgstr "Multiple BYMONTHDAYs no soportado." -#: awx/api/serializers.py:2963 +#: awx/api/serializers.py:2962 msgid "Multiple BYMONTHs not supported." msgstr "Multiple BYMONTHs no soportado." -#: awx/api/serializers.py:2965 +#: awx/api/serializers.py:2964 msgid "BYDAY with numeric prefix not supported." msgstr "BYDAY con prefijo numérico no soportado." -#: awx/api/serializers.py:2967 +#: awx/api/serializers.py:2966 msgid "BYYEARDAY not supported." msgstr "BYYEARDAY no soportado." -#: awx/api/serializers.py:2969 +#: awx/api/serializers.py:2968 msgid "BYWEEKNO not supported." msgstr "BYWEEKNO no soportado." -#: awx/api/serializers.py:2973 +#: awx/api/serializers.py:2972 msgid "COUNT > 999 is unsupported." msgstr "COUNT > 999 no está soportada." -#: awx/api/serializers.py:2977 +#: awx/api/serializers.py:2976 msgid "rrule parsing failed validation." msgstr "Validación fallida analizando 'rrule'" -#: awx/api/serializers.py:3012 +#: awx/api/serializers.py:3011 msgid "" "A summary of the new and changed values when an object is created, updated, " "or deleted" @@ -421,7 +438,7 @@ msgstr "" "Un resumen de los valores nuevos y cambiados cuando un objeto es creado, " "actualizado o eliminado." -#: awx/api/serializers.py:3014 +#: awx/api/serializers.py:3013 msgid "" "For create, update, and delete events this is the object type that was " "affected. For associate and disassociate events this is the object type " @@ -431,24 +448,24 @@ msgstr "" "afectado. Para asociar o desasociar eventos éste es el tipo de objeto " "asociado o desasociado con object2." -#: awx/api/serializers.py:3017 +#: awx/api/serializers.py:3016 msgid "" "Unpopulated for create, update, and delete events. For associate and " -"disassociate events this is the object type that object1 is being associated " -"with." +"disassociate events this is the object type that object1 is being associated" +" with." msgstr "" "Vacío para crear, actualizar y eliminar eventos. Para asociar y desasociar " "eventos éste es el tipo de objetos que object1 con el está asociado." -#: awx/api/serializers.py:3020 +#: awx/api/serializers.py:3019 msgid "The action taken with respect to the given object(s)." msgstr "La acción tomada al respeto al/los especificado(s) objeto(s)." -#: awx/api/serializers.py:3123 +#: awx/api/serializers.py:3122 msgid "Unable to login with provided credentials." msgstr "Incapaz de iniciar sesión con los credenciales indicados." -#: awx/api/serializers.py:3125 +#: awx/api/serializers.py:3124 msgid "Must include \"username\" and \"password\"." msgstr "Debe incluir \"usuario\" y \"contraseña\"." @@ -538,23 +555,23 @@ msgstr "Programaciones" msgid "Schedule Jobs List" msgstr "Lista de trabajos programados" -#: awx/api/views.py:727 +#: awx/api/views.py:730 msgid "Your Tower license only permits a single organization to exist." msgstr "Su licencia de Tower sólo permite que exista una organización." -#: awx/api/views.py:952 awx/api/views.py:1311 +#: awx/api/views.py:955 awx/api/views.py:1314 msgid "Role 'id' field is missing." msgstr "El campo de rol 'id' no encontrado." -#: awx/api/views.py:958 awx/api/views.py:4129 +#: awx/api/views.py:961 awx/api/views.py:4150 msgid "You cannot assign an Organization role as a child role for a Team." msgstr "No puede asignar un rol de organización como rol hijo para un equipo." -#: awx/api/views.py:962 awx/api/views.py:4143 +#: awx/api/views.py:965 awx/api/views.py:4164 msgid "You cannot grant system-level permissions to a team." msgstr "No puede asignar permisos de nivel de sistema a un equipo." -#: awx/api/views.py:969 awx/api/views.py:4135 +#: awx/api/views.py:972 awx/api/views.py:4156 msgid "" "You cannot grant credential access to a team when the Organization field " "isn't set, or belongs to a different organization" @@ -562,33 +579,33 @@ msgstr "" "No puede asignar credenciales de acceso a un equipo cuando el campo de " "organización no está establecido o pertenezca a una organización diferente." -#: awx/api/views.py:1059 +#: awx/api/views.py:1062 msgid "Cannot delete project." msgstr "No se puede eliminar el proyecto." -#: awx/api/views.py:1088 +#: awx/api/views.py:1091 msgid "Project Schedules" msgstr "Programación del proyecto" -#: awx/api/views.py:1192 awx/api/views.py:2285 awx/api/views.py:3298 +#: awx/api/views.py:1195 awx/api/views.py:2298 awx/api/views.py:3318 msgid "Cannot delete job resource when associated workflow job is running." msgstr "" "No es posible eliminar un recurso de trabajo cuando la tarea del flujo de " "trabajo está en ejecución." -#: awx/api/views.py:1269 +#: awx/api/views.py:1272 msgid "Me" msgstr "Yo" -#: awx/api/views.py:1315 awx/api/views.py:4084 +#: awx/api/views.py:1318 awx/api/views.py:4105 msgid "You may not perform any action with your own admin_role." msgstr "No puede realizar ninguna acción con su admin_role." -#: awx/api/views.py:1321 awx/api/views.py:4088 +#: awx/api/views.py:1324 awx/api/views.py:4109 msgid "You may not change the membership of a users admin_role" msgstr "No puede cambiar la pertenencia a usuarios admin_role" -#: awx/api/views.py:1326 awx/api/views.py:4093 +#: awx/api/views.py:1329 awx/api/views.py:4114 msgid "" "You cannot grant credential access to a user not in the credentials' " "organization" @@ -596,183 +613,183 @@ msgstr "" "No puede conceder credenciales de acceso a un usuario que no está en la " "organización del credencial." -#: awx/api/views.py:1330 awx/api/views.py:4097 +#: awx/api/views.py:1333 awx/api/views.py:4118 msgid "You cannot grant private credential access to another user" msgstr "No puede conceder acceso a un credencial privado a otro usuario" -#: awx/api/views.py:1428 +#: awx/api/views.py:1431 #, python-format msgid "Cannot change %s." msgstr "No se puede cambiar %s." -#: awx/api/views.py:1434 +#: awx/api/views.py:1437 msgid "Cannot delete user." msgstr "No se puede eliminar usuario." -#: awx/api/views.py:1583 +#: awx/api/views.py:1586 msgid "Cannot delete inventory script." msgstr "No se puede eliminar script de inventario." -#: awx/api/views.py:1820 +#: awx/api/views.py:1823 msgid "Fact not found." msgstr "Fact no encontrado." -#: awx/api/views.py:2140 +#: awx/api/views.py:2153 msgid "Inventory Source List" msgstr "Listado de fuentes del inventario" -#: awx/api/views.py:2168 +#: awx/api/views.py:2181 msgid "Cannot delete inventory source." msgstr "No se puede eliminar la fuente del inventario." -#: awx/api/views.py:2176 +#: awx/api/views.py:2189 msgid "Inventory Source Schedules" msgstr "Programaciones de la fuente del inventario" -#: awx/api/views.py:2206 +#: awx/api/views.py:2219 msgid "Notification Templates can only be assigned when source is one of {}." msgstr "" -"Plantillas de notificación pueden ser sólo asignadas cuando la fuente es una " -"de estas {}." +"Plantillas de notificación pueden ser sólo asignadas cuando la fuente es una" +" de estas {}." -#: awx/api/views.py:2414 +#: awx/api/views.py:2427 msgid "Job Template Schedules" msgstr "Programación plantilla de trabajo" -#: awx/api/views.py:2434 awx/api/views.py:2450 +#: awx/api/views.py:2447 awx/api/views.py:2463 msgid "Your license does not allow adding surveys." msgstr "Su licencia no permite añadir cuestionarios." -#: awx/api/views.py:2457 +#: awx/api/views.py:2470 msgid "'name' missing from survey spec." msgstr "'name' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2459 +#: awx/api/views.py:2472 msgid "'description' missing from survey spec." msgstr "'description' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2461 +#: awx/api/views.py:2474 msgid "'spec' missing from survey spec." msgstr "'spec' no encontrado en el especificado cuestionario." -#: awx/api/views.py:2463 +#: awx/api/views.py:2476 msgid "'spec' must be a list of items." msgstr "'spec' debe ser una lista de elementos." -#: awx/api/views.py:2465 +#: awx/api/views.py:2478 msgid "'spec' doesn't contain any items." msgstr "'spec' no contiene ningún elemento." -#: awx/api/views.py:2471 +#: awx/api/views.py:2484 #, python-format msgid "Survey question %s is not a json object." msgstr "Pregunta de cuestionario %s no es un objeto JSON." -#: awx/api/views.py:2473 +#: awx/api/views.py:2486 #, python-format msgid "'type' missing from survey question %s." msgstr "'type' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2475 +#: awx/api/views.py:2488 #, python-format msgid "'question_name' missing from survey question %s." msgstr "'question_name' no aparece en la pregunta de cuestionario %s." -#: awx/api/views.py:2477 +#: awx/api/views.py:2490 #, python-format msgid "'variable' missing from survey question %s." msgstr "'variable' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2479 +#: awx/api/views.py:2492 #, python-format msgid "'variable' '%(item)s' duplicated in survey question %(survey)s." msgstr "" "'variable' '%(item)s' repetida en la pregunta de cuestionario %(survey)s." -#: awx/api/views.py:2484 +#: awx/api/views.py:2497 #, python-format msgid "'required' missing from survey question %s." msgstr "'required' no encontrado en la pregunta de cuestionario %s." -#: awx/api/views.py:2569 +#: awx/api/views.py:2582 msgid "Maximum number of labels for {} reached." msgstr "Número máximo de etiquetas para {} alcanzado." -#: awx/api/views.py:2698 +#: awx/api/views.py:2712 msgid "No matching host could be found!" msgstr "¡Ningún servidor indicado pudo ser encontrado!" -#: awx/api/views.py:2701 +#: awx/api/views.py:2715 msgid "Multiple hosts matched the request!" msgstr "¡Varios servidores corresponden a la petición!" -#: awx/api/views.py:2706 +#: awx/api/views.py:2720 msgid "Cannot start automatically, user input required!" msgstr "" "No se puede iniciar automáticamente, !Entrada de datos de usuario necesaria!" -#: awx/api/views.py:2713 +#: awx/api/views.py:2727 msgid "Host callback job already pending." msgstr "Trabajo de callback para el servidor ya está pendiente." -#: awx/api/views.py:2726 +#: awx/api/views.py:2740 msgid "Error starting job!" msgstr "¡Error iniciando trabajo!" -#: awx/api/views.py:3055 +#: awx/api/views.py:3072 msgid "Workflow Job Template Schedules" msgstr "Programaciones de plantilla de tareas de flujo de trabajo" -#: awx/api/views.py:3197 awx/api/views.py:3745 +#: awx/api/views.py:3217 awx/api/views.py:3766 msgid "Superuser privileges needed." msgstr "Privilegios de superusuario necesarios." -#: awx/api/views.py:3229 +#: awx/api/views.py:3249 msgid "System Job Template Schedules" msgstr "Programación de plantilla de trabajos de sistema." -#: awx/api/views.py:3421 +#: awx/api/views.py:3441 msgid "Job Host Summaries List" msgstr "Lista resumida de trabajos de servidor" -#: awx/api/views.py:3468 +#: awx/api/views.py:3488 msgid "Job Event Children List" msgstr "LIsta de hijos de eventos de trabajo" -#: awx/api/views.py:3477 +#: awx/api/views.py:3497 msgid "Job Event Hosts List" msgstr "Lista de eventos de trabajos de servidor." -#: awx/api/views.py:3486 +#: awx/api/views.py:3506 msgid "Job Events List" msgstr "Lista de eventos de trabajo" -#: awx/api/views.py:3699 +#: awx/api/views.py:3720 msgid "Ad Hoc Command Events List" msgstr "Lista de eventos para comando Ad Hoc" -#: awx/api/views.py:3897 +#: awx/api/views.py:3918 msgid "Error generating stdout download file: {}" msgstr "Error generando la descarga del fichero de salida estándar: {}" -#: awx/api/views.py:3910 +#: awx/api/views.py:3931 #, python-format msgid "Error generating stdout download file: %s" msgstr "Error generando la descarga del fichero de salida estándar: %s" -#: awx/api/views.py:3955 +#: awx/api/views.py:3976 msgid "Delete not allowed while there are pending notifications" msgstr "Eliminar no está permitido mientras existan notificaciones pendientes" -#: awx/api/views.py:3962 +#: awx/api/views.py:3983 msgid "Notification Template Test" msgstr "Prueba de plantilla de notificación" -#: awx/api/views.py:4078 +#: awx/api/views.py:4099 msgid "User 'id' field is missing." msgstr "Campo de usuario 'id' no encontrado." -#: awx/api/views.py:4121 +#: awx/api/views.py:4142 msgid "Team 'id' field is missing." msgstr "Campo de equipo 'id' no encontrado." @@ -930,7 +947,7 @@ msgstr "Ejemplo de configuración que puede ser diferente para cada usuario." msgid "User" msgstr "Usuario" -#: awx/conf/fields.py:38 +#: awx/conf/fields.py:50 msgid "Enter a valid URL" msgstr "Introduzca una URL válida" @@ -943,7 +960,8 @@ msgid "Only show which settings would be commented/migrated." msgstr "Sólo mostrar los ajustes que serán comentados/migrados." #: awx/conf/management/commands/migrate_to_database_settings.py:48 -msgid "Skip over settings that would raise an error when commenting/migrating." +msgid "" +"Skip over settings that would raise an error when commenting/migrating." msgstr "Omitir los ajustes que causarán un error cuando comentando/migrando." #: awx/conf/management/commands/migrate_to_database_settings.py:55 @@ -1001,25 +1019,27 @@ msgstr "" #: awx/conf/tests/unit/test_registry.py:245 #: awx/conf/tests/unit/test_registry.py:288 #: awx/conf/tests/unit/test_registry.py:306 -#: awx/conf/tests/unit/test_settings.py:68 -#: awx/conf/tests/unit/test_settings.py:86 -#: awx/conf/tests/unit/test_settings.py:101 -#: awx/conf/tests/unit/test_settings.py:116 -#: awx/conf/tests/unit/test_settings.py:132 -#: awx/conf/tests/unit/test_settings.py:145 -#: awx/conf/tests/unit/test_settings.py:162 -#: awx/conf/tests/unit/test_settings.py:178 +#: awx/conf/tests/unit/test_settings.py:79 +#: awx/conf/tests/unit/test_settings.py:97 +#: awx/conf/tests/unit/test_settings.py:112 +#: awx/conf/tests/unit/test_settings.py:127 +#: awx/conf/tests/unit/test_settings.py:143 +#: awx/conf/tests/unit/test_settings.py:156 +#: awx/conf/tests/unit/test_settings.py:173 #: awx/conf/tests/unit/test_settings.py:189 -#: awx/conf/tests/unit/test_settings.py:205 -#: awx/conf/tests/unit/test_settings.py:226 -#: awx/conf/tests/unit/test_settings.py:249 -#: awx/conf/tests/unit/test_settings.py:263 -#: awx/conf/tests/unit/test_settings.py:287 -#: awx/conf/tests/unit/test_settings.py:307 -#: awx/conf/tests/unit/test_settings.py:324 -#: awx/conf/tests/unit/test_settings.py:337 -#: awx/conf/tests/unit/test_settings.py:351 -#: awx/conf/tests/unit/test_settings.py:387 awx/main/conf.py:19 +#: awx/conf/tests/unit/test_settings.py:200 +#: awx/conf/tests/unit/test_settings.py:216 +#: awx/conf/tests/unit/test_settings.py:237 +#: awx/conf/tests/unit/test_settings.py:259 +#: awx/conf/tests/unit/test_settings.py:285 +#: awx/conf/tests/unit/test_settings.py:299 +#: awx/conf/tests/unit/test_settings.py:323 +#: awx/conf/tests/unit/test_settings.py:343 +#: awx/conf/tests/unit/test_settings.py:360 +#: awx/conf/tests/unit/test_settings.py:374 +#: awx/conf/tests/unit/test_settings.py:398 +#: awx/conf/tests/unit/test_settings.py:412 +#: awx/conf/tests/unit/test_settings.py:448 awx/main/conf.py:19 #: awx/main/conf.py:29 awx/main/conf.py:39 awx/main/conf.py:48 #: awx/main/conf.py:60 awx/main/conf.py:78 awx/main/conf.py:103 msgid "System" @@ -1077,36 +1097,36 @@ msgstr "Funcionalidad %s no está habilitada en la licencia activa." msgid "Features not found in active license." msgstr "Funcionalidades no encontradas en la licencia activa." -#: awx/main/access.py:525 awx/main/access.py:592 awx/main/access.py:717 -#: awx/main/access.py:987 awx/main/access.py:1222 awx/main/access.py:1619 +#: awx/main/access.py:531 awx/main/access.py:598 awx/main/access.py:723 +#: awx/main/access.py:993 awx/main/access.py:1228 awx/main/access.py:1632 msgid "Resource is being used by running jobs" msgstr "Recurso está siendo usado por trabajos en ejecución" -#: awx/main/access.py:636 +#: awx/main/access.py:642 msgid "Unable to change inventory on a host." msgstr "Imposible modificar el inventario en un servidor." -#: awx/main/access.py:653 awx/main/access.py:698 +#: awx/main/access.py:659 awx/main/access.py:704 msgid "Cannot associate two items from different inventories." msgstr "No es posible asociar dos elementos de diferentes inventarios." -#: awx/main/access.py:686 +#: awx/main/access.py:692 msgid "Unable to change inventory on a group." msgstr "Imposible cambiar el inventario en un grupo." -#: awx/main/access.py:907 +#: awx/main/access.py:913 msgid "Unable to change organization on a team." msgstr "Imposible cambiar la organización en un equipo." -#: awx/main/access.py:920 +#: awx/main/access.py:926 msgid "The {} role cannot be assigned to a team" msgstr "El rol {} no puede ser asignado a un equipo." -#: awx/main/access.py:922 +#: awx/main/access.py:928 msgid "The admin_role for a User cannot be assigned to a team" msgstr "El admin_role para un usuario no puede ser asignado a un equipo" -#: awx/main/access.py:1692 +#: awx/main/access.py:1705 msgid "" "You do not have permission to the workflow job resources required for " "relaunch." @@ -1124,11 +1144,13 @@ msgstr "Activar flujo de actividad" #: awx/main/conf.py:18 msgid "Enable capturing activity for the Tower activity stream." -msgstr "Activar la captura de actividades para el flujo de actividad de Tower." +msgstr "" +"Activar la captura de actividades para el flujo de actividad de Tower." #: awx/main/conf.py:27 msgid "Enable Activity Stream for Inventory Sync" -msgstr "Habilitar el flujo de actividad para la sincronización de inventarios." +msgstr "" +"Habilitar el flujo de actividad para la sincronización de inventarios." #: awx/main/conf.py:28 msgid "" @@ -1160,8 +1182,8 @@ msgid "" "Allow Tower to email Admin users for system events that may require " "attention." msgstr "" -"Permitir a Tower enviar correo a usuarios Admin para eventos del sistema que " -"puedan requerir su atención." +"Permitir a Tower enviar correo a usuarios Admin para eventos del sistema que" +" puedan requerir su atención." #: awx/main/conf.py:57 msgid "Base URL of the Tower host" @@ -1169,8 +1191,8 @@ msgstr "Dirección base URL para el servidor Tower" #: awx/main/conf.py:58 msgid "" -"This setting is used by services like notifications to render a valid url to " -"the Tower host." +"This setting is used by services like notifications to render a valid url to" +" the Tower host." msgstr "" "Este configuración es utilizada por servicios cono notificaciones para " "mostrar una url válida al servidor Tower." @@ -1181,24 +1203,18 @@ msgstr "Cabeceras de servidor remoto" #: awx/main/conf.py:68 msgid "" -"HTTP headers and meta keys to search to determine remote host name or IP. " -"Add additional items to this list, such as \"HTTP_X_FORWARDED_FOR\", if " -"behind a reverse proxy.\n" +"HTTP headers and meta keys to search to determine remote host name or IP. Add additional items to this list, such as \"HTTP_X_FORWARDED_FOR\", if behind a reverse proxy.\n" "\n" -"Note: The headers will be searched in order and the first found remote host " -"name or IP will be used.\n" +"Note: The headers will be searched in order and the first found remote host name or IP will be used.\n" "\n" "In the below example 8.8.8.7 would be the chosen IP address.\n" "X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" "Host: 127.0.0.1\n" "REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']" msgstr "" -"Cabeceras HTTP y claves-meta para buscar determinado nombre de servidor o " -"IP. Añadir elementos adicionales a la lista, como \"HTTP_X_FORWARDED_FOR\", " -"si se está detrás de un proxy inverso.\n" +"Cabeceras HTTP y claves-meta para buscar determinado nombre de servidor o IP. Añadir elementos adicionales a la lista, como \"HTTP_X_FORWARDED_FOR\", si se está detrás de un proxy inverso.\n" "\n" -"Note: Las cabeceras serán buscadas en el orden y el primer servidor remoto " -"encontrado a través del nombre de servidor o IP, será utilizado.\n" +"Note: Las cabeceras serán buscadas en el orden y el primer servidor remoto encontrado a través del nombre de servidor o IP, será utilizado.\n" "\n" "En el siguiente ejemplo, la dirección IP 8.8.8.7 debería ser escogida.\n" "X-Forwarded-For: 8.8.8.7, 192.168.2.1, 127.0.0.1\n" @@ -1225,18 +1241,18 @@ msgstr "Módulos Ansible autorizados para ejecutar trabajos Ad Hoc" msgid "List of modules allowed to be used by ad-hoc jobs." msgstr "Lista de módulos permitidos para su uso con trabajos ad-hoc." -#: awx/main/conf.py:112 awx/main/conf.py:121 awx/main/conf.py:130 -#: awx/main/conf.py:140 awx/main/conf.py:150 awx/main/conf.py:160 -#: awx/main/conf.py:170 awx/main/conf.py:180 awx/main/conf.py:190 -#: awx/main/conf.py:202 awx/main/conf.py:214 awx/main/conf.py:226 +#: awx/main/conf.py:112 awx/main/conf.py:122 awx/main/conf.py:131 +#: awx/main/conf.py:141 awx/main/conf.py:151 awx/main/conf.py:161 +#: awx/main/conf.py:171 awx/main/conf.py:181 awx/main/conf.py:191 +#: awx/main/conf.py:203 awx/main/conf.py:215 awx/main/conf.py:227 msgid "Jobs" msgstr "Trabajos" -#: awx/main/conf.py:119 +#: awx/main/conf.py:120 msgid "Enable job isolation" msgstr "Habilitar aislamiento de trabajo" -#: awx/main/conf.py:120 +#: awx/main/conf.py:121 msgid "" "Isolates an Ansible job from protected parts of the Tower system to prevent " "exposing sensitive information." @@ -1244,67 +1260,68 @@ msgstr "" "Aísla un trabajo Ansible de partes protegidas del sistema Tower para " "prevenir la exposición de información sensible." -#: awx/main/conf.py:128 +#: awx/main/conf.py:129 msgid "Job isolation execution path" msgstr "Ruta de ejecución de un trabajo aislado" -#: awx/main/conf.py:129 +#: awx/main/conf.py:130 msgid "" "Create temporary working directories for isolated jobs in this location." msgstr "" "Crear directorios de trabajo temporales en esta ubicación para trabajos " "aislados." -#: awx/main/conf.py:138 +#: awx/main/conf.py:139 msgid "Paths to hide from isolated jobs" msgstr "Rutas a ocultar para los trabajos aislados." -#: awx/main/conf.py:139 +#: awx/main/conf.py:140 msgid "Additional paths to hide from isolated processes." msgstr "Rutas adicionales a aislar para los procesos aislados." -#: awx/main/conf.py:148 +#: awx/main/conf.py:149 msgid "Paths to expose to isolated jobs" msgstr "Rutas a exponer para los trabajos aislados." -#: awx/main/conf.py:149 +#: awx/main/conf.py:150 msgid "" -"Whitelist of paths that would otherwise be hidden to expose to isolated jobs." +"Whitelist of paths that would otherwise be hidden to expose to isolated " +"jobs." msgstr "" "Lista blanca de rutas que de otra manera serían escondidas para exponer a " "trabajos aislados." -#: awx/main/conf.py:158 +#: awx/main/conf.py:159 msgid "Standard Output Maximum Display Size" msgstr "Tamaño máximo a mostrar para la salida estándar." -#: awx/main/conf.py:159 +#: awx/main/conf.py:160 msgid "" "Maximum Size of Standard Output in bytes to display before requiring the " "output be downloaded." msgstr "" -"Tamaño máximo de la salida estándar en bytes para mostrar antes de obligar a " -"que la salida sea descargada." +"Tamaño máximo de la salida estándar en bytes para mostrar antes de obligar a" +" que la salida sea descargada." -#: awx/main/conf.py:168 +#: awx/main/conf.py:169 msgid "Job Event Standard Output Maximum Display Size" msgstr "" "Tamaño máximo de la salida estándar para mostrar del evento del trabajo." -#: awx/main/conf.py:169 +#: awx/main/conf.py:170 msgid "" "Maximum Size of Standard Output in bytes to display for a single job or ad " "hoc command event. `stdout` will end with `…` when truncated." msgstr "" -"Tamaño máximo de la salida estándar en bytes a mostrar para un único trabajo " -"o evento del comando ad hoc. `stdout` terminará con `...` cuando sea " +"Tamaño máximo de la salida estándar en bytes a mostrar para un único trabajo" +" o evento del comando ad hoc. `stdout` terminará con `...` cuando sea " "truncado." -#: awx/main/conf.py:178 +#: awx/main/conf.py:179 msgid "Maximum Scheduled Jobs" msgstr "Máximo número de trabajos programados." -#: awx/main/conf.py:179 +#: awx/main/conf.py:180 msgid "" "Maximum number of the same job template that can be waiting to run when " "launching from a schedule before no more are created." @@ -1313,11 +1330,11 @@ msgstr "" "para ser ejecutado cuando se lanzan desde una programación antes de que no " "se creen más." -#: awx/main/conf.py:188 +#: awx/main/conf.py:189 msgid "Ansible Callback Plugins" msgstr "Plugins de Ansible callback" -#: awx/main/conf.py:189 +#: awx/main/conf.py:190 msgid "" "List of paths to search for extra callback plugins to be used when running " "jobs." @@ -1325,11 +1342,11 @@ msgstr "" "Lista de rutas a buscar para plugins callback adicionales a ser utilizados " "cuando se ejecutan trabajos." -#: awx/main/conf.py:199 +#: awx/main/conf.py:200 msgid "Default Job Timeout" msgstr "Tiempo de espera por defecto para el trabajo" -#: awx/main/conf.py:200 +#: awx/main/conf.py:201 msgid "" "Maximum time to allow jobs to run. Use value of 0 to indicate that no " "timeout should be imposed. A timeout set on an individual job template will " @@ -1339,131 +1356,142 @@ msgstr "" "indicar que ningún tiempo de espera será impuesto. Un tiempo de espera " "establecido en una plantilla de trabajo individual reemplazará éste." -#: awx/main/conf.py:211 +#: awx/main/conf.py:212 msgid "Default Inventory Update Timeout" msgstr "Tiempo de espera por defecto para la actualización del inventario." -#: awx/main/conf.py:212 +#: awx/main/conf.py:213 msgid "" "Maximum time to allow inventory updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual inventory " "source will override this." msgstr "" "Tiempo máximo a permitir la ejecución de una actualización del inventario. " -"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " -"tiempo de espera establecido en una fuente de inventario individual " +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un" +" tiempo de espera establecido en una fuente de inventario individual " "reemplazará éste." -#: awx/main/conf.py:223 +#: awx/main/conf.py:224 msgid "Default Project Update Timeout" msgstr "Tiempo de espera por defecto para la actualización de un proyecto" -#: awx/main/conf.py:224 +#: awx/main/conf.py:225 msgid "" "Maximum time to allow project updates to run. Use value of 0 to indicate " "that no timeout should be imposed. A timeout set on an individual project " "will override this." msgstr "" "Tiempo máximo a permitir la ejecución de una actualización del proyecto. " -"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un " -"tiempo de espera establecido en una plantilla individual reemplazará éste." +"Utilice el valor 0 para indicar que ningún tiempo de espera será impuest. Un" +" tiempo de espera establecido en una plantilla individual reemplazará éste." -#: awx/main/conf.py:234 +#: awx/main/conf.py:235 msgid "Logging Aggregator" msgstr "Agregación de registros" -#: awx/main/conf.py:235 +#: awx/main/conf.py:236 msgid "Hostname/IP where external logs will be sent to." msgstr "Hostname/IP donde los logs externos serán enviados." -#: awx/main/conf.py:236 awx/main/conf.py:245 awx/main/conf.py:255 -#: awx/main/conf.py:264 awx/main/conf.py:275 awx/main/conf.py:290 -#: awx/main/conf.py:302 awx/main/conf.py:311 +#: awx/main/conf.py:237 awx/main/conf.py:247 awx/main/conf.py:258 +#: awx/main/conf.py:268 awx/main/conf.py:280 awx/main/conf.py:295 +#: awx/main/conf.py:307 awx/main/conf.py:316 awx/main/conf.py:325 msgid "Logging" msgstr "Registros" -#: awx/main/conf.py:243 +#: awx/main/conf.py:244 msgid "Logging Aggregator Port" msgstr "Puerto de agregación de registros" -#: awx/main/conf.py:244 -msgid "Port on Logging Aggregator to send logs to (if required)." +#: awx/main/conf.py:245 +#, fuzzy +msgid "" +"Port on Logging Aggregator to send logs to (if required and not provided in " +"Logging Aggregator)." msgstr "" -"Puerto en el agregador de registros donde enviar los registros (si es " -"necesario)." +"El puerto del Agregador de Logs al cual enviar logs (si es requerido y no " +"está definido en el Agregador de Logs)." -#: awx/main/conf.py:253 +#: awx/main/conf.py:256 msgid "Logging Aggregator Type" msgstr "Tipo de agregación de registros." -#: awx/main/conf.py:254 +#: awx/main/conf.py:257 msgid "Format messages for the chosen log aggregator." msgstr "Formato de mensajes para el agregador de registros escogidos." -#: awx/main/conf.py:262 +#: awx/main/conf.py:266 msgid "Logging Aggregator Username" msgstr "Usuario del agregador de registros" -#: awx/main/conf.py:263 +#: awx/main/conf.py:267 msgid "Username for external log aggregator (if required)." msgstr "Usuario para el agregador de registros externo (si es necesario)." -#: awx/main/conf.py:273 +#: awx/main/conf.py:278 msgid "Logging Aggregator Password/Token" msgstr "Contraseña/Token del agregador de registros" -#: awx/main/conf.py:274 +#: awx/main/conf.py:279 msgid "" "Password or authentication token for external log aggregator (if required)." msgstr "" -"Contraseña o token de autentificación para el agregador de registros externo " -"(si es necesario)." +"Contraseña o token de autentificación para el agregador de registros externo" +" (si es necesario)." -#: awx/main/conf.py:283 +#: awx/main/conf.py:288 msgid "Loggers to send data to the log aggregator from" msgstr "Registrados desde los que enviar los datos de los registros agregados" -#: awx/main/conf.py:284 +#: awx/main/conf.py:289 msgid "" -"List of loggers that will send HTTP logs to the collector, these can include " -"any or all of: \n" +"List of loggers that will send HTTP logs to the collector, these can include any or all of: \n" "awx - Tower service logs\n" "activity_stream - activity stream records\n" "job_events - callback data from Ansible job events\n" "system_tracking - facts gathered from scan jobs." msgstr "" -"Lista de registradores que enviarán registros HTTP al colector, éstos pueden " -"incluir cualquier o todos ellos: \n" +"Lista de registradores que enviarán registros HTTP al colector, éstos pueden incluir cualquier o todos ellos: \n" "awx - Servicio de registros Tower\n" "activity_stream - Registros de flujo de actividad\n" "job_events - Datos callback desde los eventos de trabajo Ansible\n" "system_tracking - Facts obtenidos por los trabajos escaneados." -#: awx/main/conf.py:297 +#: awx/main/conf.py:302 msgid "Log System Tracking Facts Individually" msgstr "Sistema de registros tratará los facts individualmente." -#: awx/main/conf.py:298 +#: awx/main/conf.py:303 msgid "" "If set, system tracking facts will be sent for each package, service, " -"orother item found in a scan, allowing for greater search query granularity. " -"If unset, facts will be sent as a single dictionary, allowing for greater " +"orother item found in a scan, allowing for greater search query granularity." +" If unset, facts will be sent as a single dictionary, allowing for greater " "efficiency in fact processing." msgstr "" "Si se establece, los facts del sistema de rastreo serán enviados por cada " "paquete, servicio u otro elemento encontrado en el escaneo, permitiendo " "mayor granularidad en la consulta de búsqueda. Si no se establece, lo facts " -"serán enviados como un único diccionario, permitiendo mayor eficiencia en el " -"proceso de facts." +"serán enviados como un único diccionario, permitiendo mayor eficiencia en el" +" proceso de facts." -#: awx/main/conf.py:309 +#: awx/main/conf.py:314 msgid "Enable External Logging" msgstr "Habilitar registro externo" -#: awx/main/conf.py:310 +#: awx/main/conf.py:315 msgid "Enable sending logs to external log aggregator." msgstr "Habilitar el envío de registros a un agregador de registros externo." +#: awx/main/conf.py:323 +#, fuzzy +msgid "Cluster-wide Tower unique identifier." +msgstr "Indentificador de Torre único a través del cluster." + +#: awx/main/conf.py:324 +#, fuzzy +msgid "Useful to uniquely identify Tower instances." +msgstr "Útil para identificar instancias de Torre." + #: awx/main/models/activity_stream.py:22 msgid "Entity Created" msgstr "Entidad creada" @@ -1506,43 +1534,43 @@ msgstr "Módulo no soportado para comandos ad hoc." msgid "No argument passed to %s module." msgstr "Ningún argumento pasado al módulo %s." -#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:752 +#: awx/main/models/ad_hoc_commands.py:222 awx/main/models/jobs.py:756 msgid "Host Failed" msgstr "Servidor fallido" -#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:753 +#: awx/main/models/ad_hoc_commands.py:223 awx/main/models/jobs.py:757 msgid "Host OK" msgstr "Servidor OK" -#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:756 +#: awx/main/models/ad_hoc_commands.py:224 awx/main/models/jobs.py:760 msgid "Host Unreachable" msgstr "Servidor no alcanzable" -#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:755 +#: awx/main/models/ad_hoc_commands.py:229 awx/main/models/jobs.py:759 msgid "Host Skipped" msgstr "Servidor omitido" -#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:783 +#: awx/main/models/ad_hoc_commands.py:239 awx/main/models/jobs.py:787 msgid "Debug" msgstr "Debug" -#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:784 +#: awx/main/models/ad_hoc_commands.py:240 awx/main/models/jobs.py:788 msgid "Verbose" msgstr "Nivel de detalle" -#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:785 +#: awx/main/models/ad_hoc_commands.py:241 awx/main/models/jobs.py:789 msgid "Deprecated" msgstr "Obsoleto" -#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:786 +#: awx/main/models/ad_hoc_commands.py:242 awx/main/models/jobs.py:790 msgid "Warning" msgstr "Advertencia" -#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:787 +#: awx/main/models/ad_hoc_commands.py:243 awx/main/models/jobs.py:791 msgid "System Warning" msgstr "Advertencia del sistema" -#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:788 +#: awx/main/models/ad_hoc_commands.py:244 awx/main/models/jobs.py:792 #: awx/main/models/unified_jobs.py:64 msgid "Error" msgstr "Error" @@ -1609,31 +1637,31 @@ msgstr "Amazon Web Services" msgid "Rackspace" msgstr "Rackspace" -#: awx/main/models/credential.py:38 awx/main/models/inventory.py:713 +#: awx/main/models/credential.py:38 awx/main/models/inventory.py:714 msgid "VMware vCenter" msgstr "VMware vCenter" -#: awx/main/models/credential.py:39 awx/main/models/inventory.py:714 +#: awx/main/models/credential.py:39 awx/main/models/inventory.py:715 msgid "Red Hat Satellite 6" msgstr "Red Hat Satellite 6" -#: awx/main/models/credential.py:40 awx/main/models/inventory.py:715 +#: awx/main/models/credential.py:40 awx/main/models/inventory.py:716 msgid "Red Hat CloudForms" msgstr "Red Hat CloudForms" -#: awx/main/models/credential.py:41 awx/main/models/inventory.py:710 +#: awx/main/models/credential.py:41 awx/main/models/inventory.py:711 msgid "Google Compute Engine" msgstr "Google Compute Engine" -#: awx/main/models/credential.py:42 awx/main/models/inventory.py:711 +#: awx/main/models/credential.py:42 awx/main/models/inventory.py:712 msgid "Microsoft Azure Classic (deprecated)" msgstr "Microsoft Azure Classic (obsoleto)" -#: awx/main/models/credential.py:43 awx/main/models/inventory.py:712 +#: awx/main/models/credential.py:43 awx/main/models/inventory.py:713 msgid "Microsoft Azure Resource Manager" msgstr "Microsoft Azure Resource Manager" -#: awx/main/models/credential.py:44 awx/main/models/inventory.py:716 +#: awx/main/models/credential.py:44 awx/main/models/inventory.py:717 msgid "OpenStack" msgstr "OpenStack" @@ -1734,8 +1762,8 @@ msgid "" "Passphrase to unlock SSH private key if encrypted (or \"ASK\" to prompt the " "user for machine credentials)." msgstr "" -"Frase de contraseña para desbloquear la clave privada SSH si está cifrada (o " -"\"ASK\" para solicitar al usuario por credenciales de máquina)." +"Frase de contraseña para desbloquear la clave privada SSH si está cifrada (o" +" \"ASK\" para solicitar al usuario por credenciales de máquina)." #: awx/main/models/credential.py:161 msgid "Privilege escalation method." @@ -1826,7 +1854,14 @@ msgid "SSH key unlock must be set when SSH key is encrypted." msgstr "" "Desbloquear clave SSH debe ser establecido cuando la clave SSH está cifrada." -#: awx/main/models/credential.py:352 +#: awx/main/models/credential.py:349 +#, fuzzy +msgid "SSH key unlock should not be set when SSH key is not encrypted." +msgstr "" +"Desbloqueo de la llave SSH no debería ser establecido cuando la llave SSH no" +" está enciptada." + +#: awx/main/models/credential.py:355 msgid "Credential cannot be assigned to both a user and team." msgstr "EL credencial no puede ser asignado a ambos: un usuario y un equipo." @@ -1845,82 +1880,82 @@ msgid "" "Arbitrary JSON structure of module facts captured at timestamp for a single " "host." msgstr "" -"Estructura de JSON arbitraria de módulos facts capturados en la fecha y hora " -"para un único servidor." +"Estructura de JSON arbitraria de módulos facts capturados en la fecha y hora" +" para un único servidor." -#: awx/main/models/inventory.py:45 +#: awx/main/models/inventory.py:46 msgid "inventories" msgstr "inventarios" -#: awx/main/models/inventory.py:52 +#: awx/main/models/inventory.py:53 msgid "Organization containing this inventory." msgstr "Organización que contiene este inventario." -#: awx/main/models/inventory.py:58 +#: awx/main/models/inventory.py:59 msgid "Inventory variables in JSON or YAML format." msgstr "Variables de inventario en formato JSON o YAML." -#: awx/main/models/inventory.py:63 +#: awx/main/models/inventory.py:64 msgid "Flag indicating whether any hosts in this inventory have failed." msgstr "" "Indicador que establece si algún servidor en este inventario ha fallado." -#: awx/main/models/inventory.py:68 +#: awx/main/models/inventory.py:69 msgid "Total number of hosts in this inventory." msgstr "Número total de servidores en este inventario." -#: awx/main/models/inventory.py:73 +#: awx/main/models/inventory.py:74 msgid "Number of hosts in this inventory with active failures." msgstr "Número de servidores en este inventario con fallos actuales." -#: awx/main/models/inventory.py:78 +#: awx/main/models/inventory.py:79 msgid "Total number of groups in this inventory." msgstr "Número total de grupos en este inventario." -#: awx/main/models/inventory.py:83 +#: awx/main/models/inventory.py:84 msgid "Number of groups in this inventory with active failures." msgstr "Número de grupos en este inventario con fallos actuales." -#: awx/main/models/inventory.py:88 +#: awx/main/models/inventory.py:89 msgid "" "Flag indicating whether this inventory has any external inventory sources." msgstr "" "Indicador que establece si el inventario tiene alguna fuente de externa de " "inventario." -#: awx/main/models/inventory.py:93 +#: awx/main/models/inventory.py:94 msgid "" "Total number of external inventory sources configured within this inventory." msgstr "" "Número total de inventarios de origen externo configurado dentro de este " "inventario." -#: awx/main/models/inventory.py:98 +#: awx/main/models/inventory.py:99 msgid "Number of external inventory sources in this inventory with failures." msgstr "" "Número de inventarios de origen externo en este inventario con errores." -#: awx/main/models/inventory.py:339 +#: awx/main/models/inventory.py:340 msgid "Is this host online and available for running jobs?" msgstr "¿Está este servidor funcionando y disponible para ejecutar trabajos?" -#: awx/main/models/inventory.py:345 +#: awx/main/models/inventory.py:346 msgid "" "The value used by the remote inventory source to uniquely identify the host" msgstr "" "El valor usado por el inventario de fuente remota para identificar de forma " "única el servidor" -#: awx/main/models/inventory.py:350 +#: awx/main/models/inventory.py:351 msgid "Host variables in JSON or YAML format." msgstr "Variables del servidor en formato JSON o YAML." -#: awx/main/models/inventory.py:372 +#: awx/main/models/inventory.py:373 msgid "Flag indicating whether the last job failed for this host." msgstr "" "Indicador que establece si el último trabajo ha fallado para este servidor." -#: awx/main/models/inventory.py:377 +#: awx/main/models/inventory.py:378 msgid "" "Flag indicating whether this host was created/updated from any external " "inventory sources." @@ -1928,42 +1963,43 @@ msgstr "" "Indicador que establece si este servidor fue creado/actualizado desde algún " "inventario de fuente externa." -#: awx/main/models/inventory.py:383 +#: awx/main/models/inventory.py:384 msgid "Inventory source(s) that created or modified this host." msgstr "Fuente(s) del inventario que crearon o modificaron este servidor." -#: awx/main/models/inventory.py:474 +#: awx/main/models/inventory.py:475 msgid "Group variables in JSON or YAML format." msgstr "Grupo de variables en formato JSON o YAML." -#: awx/main/models/inventory.py:480 +#: awx/main/models/inventory.py:481 msgid "Hosts associated directly with this group." msgstr "Hosts associated directly with this group." -#: awx/main/models/inventory.py:485 +#: awx/main/models/inventory.py:486 msgid "Total number of hosts directly or indirectly in this group." msgstr "" "Número total de servidores directamente o indirectamente en este grupo." -#: awx/main/models/inventory.py:490 +#: awx/main/models/inventory.py:491 msgid "Flag indicating whether this group has any hosts with active failures." msgstr "" "Indicador que establece si este grupo tiene algunos servidores con fallos " "actuales." -#: awx/main/models/inventory.py:495 +#: awx/main/models/inventory.py:496 msgid "Number of hosts in this group with active failures." msgstr "Número de servidores en este grupo con fallos actuales." -#: awx/main/models/inventory.py:500 +#: awx/main/models/inventory.py:501 msgid "Total number of child groups contained within this group." msgstr "Número total de grupos hijo dentro de este grupo." -#: awx/main/models/inventory.py:505 +#: awx/main/models/inventory.py:506 msgid "Number of child groups within this group that have active failures." -msgstr "Número de grupos hijo dentro de este grupo que tienen fallos actuales." +msgstr "" +"Número de grupos hijo dentro de este grupo que tienen fallos actuales." -#: awx/main/models/inventory.py:510 +#: awx/main/models/inventory.py:511 msgid "" "Flag indicating whether this group was created/updated from any external " "inventory sources." @@ -1971,36 +2007,36 @@ msgstr "" "Indicador que establece si este grupo fue creado/actualizado desde un " "inventario de fuente externa." -#: awx/main/models/inventory.py:516 +#: awx/main/models/inventory.py:517 msgid "Inventory source(s) that created or modified this group." msgstr "Fuente(s) de inventario que crearon o modificaron este grupo." -#: awx/main/models/inventory.py:706 awx/main/models/projects.py:42 -#: awx/main/models/unified_jobs.py:411 +#: awx/main/models/inventory.py:707 awx/main/models/projects.py:42 +#: awx/main/models/unified_jobs.py:414 msgid "Manual" msgstr "Manual" -#: awx/main/models/inventory.py:707 +#: awx/main/models/inventory.py:708 msgid "Local File, Directory or Script" msgstr "Fichero local, directorio o script" -#: awx/main/models/inventory.py:708 +#: awx/main/models/inventory.py:709 msgid "Rackspace Cloud Servers" msgstr "Servidores cloud en Rackspace" -#: awx/main/models/inventory.py:709 +#: awx/main/models/inventory.py:710 msgid "Amazon EC2" msgstr "Amazon EC2" -#: awx/main/models/inventory.py:717 +#: awx/main/models/inventory.py:718 msgid "Custom Script" msgstr "Script personalizado" -#: awx/main/models/inventory.py:828 +#: awx/main/models/inventory.py:829 msgid "Inventory source variables in YAML or JSON format." msgstr "Variables para la fuente del inventario en formato YAML o JSON." -#: awx/main/models/inventory.py:847 +#: awx/main/models/inventory.py:848 msgid "" "Comma-separated list of filter expressions (EC2 only). Hosts are imported " "when ANY of the filters match." @@ -2008,92 +2044,92 @@ msgstr "" "Lista de expresiones de filtrado separadas por coma (sólo EC2). Servidores " "son importados cuando ALGÚN filtro coincide." -#: awx/main/models/inventory.py:853 +#: awx/main/models/inventory.py:854 msgid "Limit groups automatically created from inventory source (EC2 only)." msgstr "" "Limitar grupos creados automáticamente desde la fuente del inventario (sólo " "EC2)" -#: awx/main/models/inventory.py:857 +#: awx/main/models/inventory.py:858 msgid "Overwrite local groups and hosts from remote inventory source." msgstr "" "Sobrescribir grupos locales y servidores desde una fuente remota del " "inventario." -#: awx/main/models/inventory.py:861 +#: awx/main/models/inventory.py:862 msgid "Overwrite local variables from remote inventory source." msgstr "" "Sobrescribir las variables locales desde una fuente remota del inventario." -#: awx/main/models/inventory.py:893 +#: awx/main/models/inventory.py:894 msgid "Availability Zone" msgstr "Zona de disponibilidad" -#: awx/main/models/inventory.py:894 +#: awx/main/models/inventory.py:895 msgid "Image ID" msgstr "Id de imagen" -#: awx/main/models/inventory.py:895 +#: awx/main/models/inventory.py:896 msgid "Instance ID" msgstr "ID de instancia" -#: awx/main/models/inventory.py:896 +#: awx/main/models/inventory.py:897 msgid "Instance Type" msgstr "Tipo de instancia" -#: awx/main/models/inventory.py:897 +#: awx/main/models/inventory.py:898 msgid "Key Name" msgstr "Nombre clave" -#: awx/main/models/inventory.py:898 +#: awx/main/models/inventory.py:899 msgid "Region" msgstr "Región" -#: awx/main/models/inventory.py:899 +#: awx/main/models/inventory.py:900 msgid "Security Group" msgstr "Grupo de seguridad" -#: awx/main/models/inventory.py:900 +#: awx/main/models/inventory.py:901 msgid "Tags" msgstr "Etiquetas" -#: awx/main/models/inventory.py:901 +#: awx/main/models/inventory.py:902 msgid "VPC ID" msgstr "VPC ID" -#: awx/main/models/inventory.py:902 +#: awx/main/models/inventory.py:903 msgid "Tag None" msgstr "Etiqueta ninguna" -#: awx/main/models/inventory.py:973 +#: awx/main/models/inventory.py:974 #, python-format msgid "" "Cloud-based inventory sources (such as %s) require credentials for the " "matching cloud service." msgstr "" -"Fuentes de inventario basados en Cloud (como %s) requieren credenciales para " -"identificar los correspondientes servicios cloud." +"Fuentes de inventario basados en Cloud (como %s) requieren credenciales para" +" identificar los correspondientes servicios cloud." -#: awx/main/models/inventory.py:980 +#: awx/main/models/inventory.py:981 msgid "Credential is required for a cloud source." msgstr "Un credencial es necesario para una fuente cloud." -#: awx/main/models/inventory.py:1005 +#: awx/main/models/inventory.py:1006 #, python-format msgid "Invalid %(source)s region: %(region)s" msgstr "Región %(source)s inválida: %(region)s" -#: awx/main/models/inventory.py:1030 +#: awx/main/models/inventory.py:1031 #, python-format msgid "Invalid filter expression: %(filter)s" msgstr "Expresión de filtro inválida: %(filter)s" -#: awx/main/models/inventory.py:1048 +#: awx/main/models/inventory.py:1049 #, python-format msgid "Invalid group by choice: %(choice)s" msgstr "Grupo escogido inválido: %(choice)s" -#: awx/main/models/inventory.py:1195 +#: awx/main/models/inventory.py:1196 #, python-format msgid "" "Unable to configure this item for cloud sync. It is already managed by %s." @@ -2101,11 +2137,11 @@ msgstr "" "Imposible configurar este elemento para sincronización cloud. Está " "administrado actualmente por %s." -#: awx/main/models/inventory.py:1290 +#: awx/main/models/inventory.py:1307 msgid "Inventory script contents" msgstr "Contenido del script de inventario" -#: awx/main/models/inventory.py:1295 +#: awx/main/models/inventory.py:1312 msgid "Organization owning this inventory script" msgstr "Organización propietario de este script de inventario" @@ -2124,139 +2160,142 @@ msgstr "" #: awx/main/models/jobs.py:268 msgid "Job Template must provide 'inventory' or allow prompting for it." msgstr "" -"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." +"La plantilla de trabajo debe proporcionar 'inventory' o permitir " +"solicitarlo." #: awx/main/models/jobs.py:272 msgid "Job Template must provide 'credential' or allow prompting for it." msgstr "" -"La plantilla de trabajo debe proporcionar 'inventory' o permitir solicitarlo." +"La plantilla de trabajo debe proporcionar 'inventory' o permitir " +"solicitarlo." -#: awx/main/models/jobs.py:370 +#: awx/main/models/jobs.py:374 msgid "Cannot override job_type to or from a scan job." msgstr "No se puede sustituir job_type a o desde un trabajo de escaneo." -#: awx/main/models/jobs.py:373 +#: awx/main/models/jobs.py:377 msgid "Inventory cannot be changed at runtime for scan jobs." msgstr "" "El inventario no puede ser cambiado en el tiempo de ejecución para trabajos " "de escaneo." -#: awx/main/models/jobs.py:439 awx/main/models/projects.py:243 +#: awx/main/models/jobs.py:443 awx/main/models/projects.py:248 msgid "SCM Revision" msgstr "Revisión SCM" -#: awx/main/models/jobs.py:440 +#: awx/main/models/jobs.py:444 msgid "The SCM Revision from the Project used for this job, if available" msgstr "" -"La revisión SCM desde el proyecto usado para este trabajo, si está disponible" +"La revisión SCM desde el proyecto usado para este trabajo, si está " +"disponible" -#: awx/main/models/jobs.py:448 +#: awx/main/models/jobs.py:452 msgid "" "The SCM Refresh task used to make sure the playbooks were available for the " "job run" msgstr "" -"La tarea de actualización de SCM utilizado para asegurarse que los playbooks " -"estaban disponibles para la ejecución del trabajo" +"La tarea de actualización de SCM utilizado para asegurarse que los playbooks" +" estaban disponibles para la ejecución del trabajo" -#: awx/main/models/jobs.py:651 +#: awx/main/models/jobs.py:655 msgid "job host summaries" msgstr "Resumen de trabajos de servidor" -#: awx/main/models/jobs.py:754 +#: awx/main/models/jobs.py:758 msgid "Host Failure" msgstr "Fallo del servidor" -#: awx/main/models/jobs.py:757 awx/main/models/jobs.py:771 +#: awx/main/models/jobs.py:761 awx/main/models/jobs.py:775 msgid "No Hosts Remaining" msgstr "No más servidores" -#: awx/main/models/jobs.py:758 +#: awx/main/models/jobs.py:762 msgid "Host Polling" msgstr "Sondeo al servidor" -#: awx/main/models/jobs.py:759 +#: awx/main/models/jobs.py:763 msgid "Host Async OK" msgstr "Servidor Async OK" -#: awx/main/models/jobs.py:760 +#: awx/main/models/jobs.py:764 msgid "Host Async Failure" msgstr "Servidor Async fallido" -#: awx/main/models/jobs.py:761 +#: awx/main/models/jobs.py:765 msgid "Item OK" msgstr "Elemento OK" -#: awx/main/models/jobs.py:762 +#: awx/main/models/jobs.py:766 msgid "Item Failed" msgstr "Elemento fallido" -#: awx/main/models/jobs.py:763 +#: awx/main/models/jobs.py:767 msgid "Item Skipped" msgstr "Elemento omitido" -#: awx/main/models/jobs.py:764 +#: awx/main/models/jobs.py:768 msgid "Host Retry" msgstr "Reintentar servidor" -#: awx/main/models/jobs.py:766 +#: awx/main/models/jobs.py:770 msgid "File Difference" msgstr "Diferencias del fichero" -#: awx/main/models/jobs.py:767 +#: awx/main/models/jobs.py:771 msgid "Playbook Started" msgstr "Playbook iniciado" -#: awx/main/models/jobs.py:768 +#: awx/main/models/jobs.py:772 msgid "Running Handlers" msgstr "Handlers ejecutándose" -#: awx/main/models/jobs.py:769 +#: awx/main/models/jobs.py:773 msgid "Including File" msgstr "Incluyendo fichero" -#: awx/main/models/jobs.py:770 +#: awx/main/models/jobs.py:774 msgid "No Hosts Matched" msgstr "Ningún servidor corresponde" -#: awx/main/models/jobs.py:772 +#: awx/main/models/jobs.py:776 msgid "Task Started" msgstr "Tarea iniciada" -#: awx/main/models/jobs.py:774 +#: awx/main/models/jobs.py:778 msgid "Variables Prompted" msgstr "Variables solicitadas" -#: awx/main/models/jobs.py:775 +#: awx/main/models/jobs.py:779 msgid "Gathering Facts" msgstr "Obteniendo facts" -#: awx/main/models/jobs.py:776 +#: awx/main/models/jobs.py:780 msgid "internal: on Import for Host" msgstr "internal: en la importación para el servidor" -#: awx/main/models/jobs.py:777 +#: awx/main/models/jobs.py:781 msgid "internal: on Not Import for Host" msgstr "internal: en la no importación para el servidor" -#: awx/main/models/jobs.py:778 +#: awx/main/models/jobs.py:782 msgid "Play Started" msgstr "Jugada iniciada" -#: awx/main/models/jobs.py:779 +#: awx/main/models/jobs.py:783 msgid "Playbook Complete" msgstr "Playbook terminado" -#: awx/main/models/jobs.py:1189 +#: awx/main/models/jobs.py:1193 msgid "Remove jobs older than a certain number of days" msgstr "Eliminar trabajos más antiguos que el ńumero de días especificado" -#: awx/main/models/jobs.py:1190 +#: awx/main/models/jobs.py:1194 msgid "Remove activity stream entries older than a certain number of days" msgstr "" "Eliminar entradas del flujo de actividad más antiguos que el número de días " "especificado" -#: awx/main/models/jobs.py:1191 +#: awx/main/models/jobs.py:1195 msgid "Purge and/or reduce the granularity of system tracking data" msgstr "" "Limpiar y/o reducir la granularidad de los datos del sistema de rastreo" @@ -2318,7 +2357,8 @@ msgid "Token is expired" msgstr "Token está expirado" #: awx/main/models/organization.py:213 -msgid "The maximum number of allowed sessions for this user has been exceeded." +msgid "" +"The maximum number of allowed sessions for this user has been exceeded." msgstr "" "El número máximo de sesiones permitidas para este usuario ha sido excedido." @@ -2326,11 +2366,11 @@ msgstr "" msgid "Invalid token" msgstr "Token inválido" -#: awx/main/models/organization.py:233 +#: awx/main/models/organization.py:234 msgid "Reason the auth token was invalidated." msgstr "Razón por la que el token fue invalidado." -#: awx/main/models/organization.py:272 +#: awx/main/models/organization.py:273 msgid "Invalid reason specified" msgstr "Razón especificada inválida" @@ -2346,7 +2386,12 @@ msgstr "Mercurial" msgid "Subversion" msgstr "Subversion" -#: awx/main/models/projects.py:71 +#: awx/main/models/projects.py:46 +#, fuzzy +msgid "Red Hat Insights" +msgstr "Red Hat Insights" + +#: awx/main/models/projects.py:72 msgid "" "Local path (relative to PROJECTS_ROOT) containing playbooks and related " "files for this project." @@ -2354,68 +2399,68 @@ msgstr "" "Ruta local (relativa a PROJECTS_ROOT) que contiene playbooks y ficheros " "relacionados para este proyecto." -#: awx/main/models/projects.py:80 +#: awx/main/models/projects.py:81 msgid "SCM Type" msgstr "Tipo SCM" -#: awx/main/models/projects.py:81 +#: awx/main/models/projects.py:82 msgid "Specifies the source control system used to store the project." msgstr "" "Especifica el sistema de control de fuentes utilizado para almacenar el " "proyecto." -#: awx/main/models/projects.py:87 +#: awx/main/models/projects.py:88 msgid "SCM URL" msgstr "SCM URL" -#: awx/main/models/projects.py:88 +#: awx/main/models/projects.py:89 msgid "The location where the project is stored." msgstr "La ubicación donde el proyecto está alojado." -#: awx/main/models/projects.py:94 +#: awx/main/models/projects.py:95 msgid "SCM Branch" msgstr "Rama SCM" -#: awx/main/models/projects.py:95 +#: awx/main/models/projects.py:96 msgid "Specific branch, tag or commit to checkout." msgstr "Especificar rama, etiqueta o commit para checkout." -#: awx/main/models/projects.py:99 +#: awx/main/models/projects.py:100 msgid "Discard any local changes before syncing the project." msgstr "" "Descartar cualquier cambio local antes de la sincronización del proyecto." -#: awx/main/models/projects.py:103 +#: awx/main/models/projects.py:104 msgid "Delete the project before syncing." msgstr "Eliminar el proyecto antes de la sincronización." -#: awx/main/models/projects.py:116 +#: awx/main/models/projects.py:117 msgid "The amount of time to run before the task is canceled." msgstr "La cantidad de tiempo a ejecutar antes de que la tarea sea cancelada." -#: awx/main/models/projects.py:130 +#: awx/main/models/projects.py:133 msgid "Invalid SCM URL." msgstr "SCM URL inválida." -#: awx/main/models/projects.py:133 +#: awx/main/models/projects.py:136 msgid "SCM URL is required." msgstr "SCM URL es obligatoria." -#: awx/main/models/projects.py:142 +#: awx/main/models/projects.py:145 msgid "Credential kind must be 'scm'." msgstr "TIpo de credenciales deben ser 'scm'." -#: awx/main/models/projects.py:157 +#: awx/main/models/projects.py:162 msgid "Invalid credential." msgstr "Credencial inválida." -#: awx/main/models/projects.py:229 +#: awx/main/models/projects.py:234 msgid "Update the project when a job is launched that uses the project." msgstr "" "Actualizar el proyecto mientras un trabajo es ejecutado que usa este " "proyecto." -#: awx/main/models/projects.py:234 +#: awx/main/models/projects.py:239 msgid "" "The number of seconds after the last project update ran that a newproject " "update will be launched as a job dependency." @@ -2424,15 +2469,15 @@ msgstr "" "ejecutó para que la nueva actualización del proyecto será ejecutada como un " "trabajo dependiente." -#: awx/main/models/projects.py:244 +#: awx/main/models/projects.py:249 msgid "The last revision fetched by a project update" msgstr "La última revisión obtenida por una actualización del proyecto." -#: awx/main/models/projects.py:251 +#: awx/main/models/projects.py:256 msgid "Playbook Files" msgstr "Ficheros Playbook" -#: awx/main/models/projects.py:252 +#: awx/main/models/projects.py:257 msgid "List of playbooks found in the project" msgstr "Lista de playbooks encontrados en este proyecto" @@ -2596,50 +2641,50 @@ msgstr "Sin fuente externa" msgid "Updating" msgstr "Actualizando" -#: awx/main/models/unified_jobs.py:412 +#: awx/main/models/unified_jobs.py:415 msgid "Relaunch" msgstr "Relanzar" -#: awx/main/models/unified_jobs.py:413 +#: awx/main/models/unified_jobs.py:416 msgid "Callback" msgstr "Callback" -#: awx/main/models/unified_jobs.py:414 +#: awx/main/models/unified_jobs.py:417 msgid "Scheduled" msgstr "Programado" -#: awx/main/models/unified_jobs.py:415 +#: awx/main/models/unified_jobs.py:418 msgid "Dependency" msgstr "Dependencia" -#: awx/main/models/unified_jobs.py:416 +#: awx/main/models/unified_jobs.py:419 msgid "Workflow" msgstr "Flujo de trabajo" -#: awx/main/models/unified_jobs.py:417 +#: awx/main/models/unified_jobs.py:420 msgid "Sync" msgstr "Sincronizar" -#: awx/main/models/unified_jobs.py:463 +#: awx/main/models/unified_jobs.py:466 msgid "The Tower node the job executed on." msgstr "El nodo tower donde el trabajo se ejecutó." -#: awx/main/models/unified_jobs.py:489 +#: awx/main/models/unified_jobs.py:492 msgid "The date and time the job was queued for starting." msgstr "La fecha y hora que el trabajo fue puesto en la cola para iniciarse." -#: awx/main/models/unified_jobs.py:495 +#: awx/main/models/unified_jobs.py:498 msgid "The date and time the job finished execution." msgstr "La fecha y hora en la que el trabajo finalizó su ejecución." -#: awx/main/models/unified_jobs.py:501 +#: awx/main/models/unified_jobs.py:504 msgid "Elapsed time in seconds that the job ran." msgstr "Tiempo transcurrido en segundos que el trabajo se ejecutó. " -#: awx/main/models/unified_jobs.py:523 +#: awx/main/models/unified_jobs.py:526 msgid "" -"A status field to indicate the state of the job if it wasn't able to run and " -"capture stdout" +"A status field to indicate the state of the job if it wasn't able to run and" +" capture stdout" msgstr "" "Un campo de estado que indica el estado del trabajo si éste no fue capaz de " "ejecutarse y obtener la salida estándar." @@ -2653,11 +2698,11 @@ msgstr "" "{} #{} tuvo estado {} en Ansible Tower, ver detalles en {}\n" "\n" -#: awx/main/notifications/hipchat_backend.py:46 +#: awx/main/notifications/hipchat_backend.py:47 msgid "Error sending messages: {}" msgstr "Error enviando mensajes: {}" -#: awx/main/notifications/hipchat_backend.py:48 +#: awx/main/notifications/hipchat_backend.py:49 msgid "Error sending message to hipchat: {}" msgstr "Error enviando mensaje a hipchat: {}" @@ -2697,58 +2742,58 @@ msgid "" "Job spawned from workflow could not start because it was missing a related " "resource such as project or inventory" msgstr "" -"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no se " -"encontraron los recursos relacionados como un proyecto o un inventario." +"Trabajo generado desde un flujo de trabajo no pudo ser iniciado porque no se" +" encontraron los recursos relacionados como un proyecto o un inventario." -#: awx/main/tasks.py:180 +#: awx/main/tasks.py:149 msgid "Ansible Tower host usage over 90%" msgstr "Ansible Tower uso de servidores por encima de 90%" -#: awx/main/tasks.py:185 +#: awx/main/tasks.py:154 msgid "Ansible Tower license will expire soon" msgstr "Licencia de Ansible Tower expirará pronto" -#: awx/main/tasks.py:249 +#: awx/main/tasks.py:218 msgid "status_str must be either succeeded or failed" msgstr "status_str debe ser 'succeeded' o 'failed'" -#: awx/main/utils/common.py:89 +#: awx/main/utils/common.py:91 #, python-format msgid "Unable to convert \"%s\" to boolean" msgstr "Imposible convertir \"%s\" a booleano" -#: awx/main/utils/common.py:245 +#: awx/main/utils/common.py:265 #, python-format msgid "Unsupported SCM type \"%s\"" msgstr "Tipo de SCM no soportado \"%s\"" -#: awx/main/utils/common.py:252 awx/main/utils/common.py:264 -#: awx/main/utils/common.py:283 +#: awx/main/utils/common.py:272 awx/main/utils/common.py:284 +#: awx/main/utils/common.py:303 #, python-format msgid "Invalid %s URL" msgstr "URL %s inválida" -#: awx/main/utils/common.py:254 awx/main/utils/common.py:292 +#: awx/main/utils/common.py:274 awx/main/utils/common.py:313 #, python-format msgid "Unsupported %s URL" msgstr "URL %s no soportada" -#: awx/main/utils/common.py:294 +#: awx/main/utils/common.py:315 #, python-format msgid "Unsupported host \"%s\" for file:// URL" msgstr "Servidor \"%s\" no soportado para URL file://" -#: awx/main/utils/common.py:296 +#: awx/main/utils/common.py:317 #, python-format msgid "Host is required for %s URL" msgstr "Servidor es obligatorio para URL %s" -#: awx/main/utils/common.py:314 +#: awx/main/utils/common.py:335 #, python-format msgid "Username must be \"git\" for SSH access to %s." msgstr "Usuario debe ser \"git\" para acceso SSH a %s." -#: awx/main/utils/common.py:320 +#: awx/main/utils/common.py:341 #, python-format msgid "Username must be \"hg\" for SSH access to %s." msgstr "Usuario debe ser \"hg\" para acceso SSH a %s." @@ -2783,10 +2828,11 @@ msgstr "Al menos una clave privada es necesaria." #: awx/main/validators.py:126 #, python-format msgid "" -"At least %(min_keys)d private keys are required, only %(key_count)d provided." +"At least %(min_keys)d private keys are required, only %(key_count)d " +"provided." msgstr "" -"Al menos %(min_keys)d claves privadas son necesarias, sólo %(key_count)d han " -"sido proporcionadas." +"Al menos %(min_keys)d claves privadas son necesarias, sólo %(key_count)d han" +" sido proporcionadas." #: awx/main/validators.py:129 #, python-format @@ -2829,7 +2875,8 @@ msgstr "" #: awx/main/validators.py:145 #, python-format msgid "" -"No more than %(max_certs)d certificates are allowed, %(cert_count)d provided." +"No more than %(max_certs)d certificates are allowed, %(cert_count)d " +"provided." msgstr "" "No más de %(max_certs)d certificados están permitidos, %(cert_count)d han " "sido proporcionados." @@ -2870,195 +2917,195 @@ msgstr "Error de servidor" msgid "A server error has occurred." msgstr "Un error en el servidor ha ocurrido." -#: awx/settings/defaults.py:625 +#: awx/settings/defaults.py:629 msgid "Chicago" msgstr "Chicago" -#: awx/settings/defaults.py:626 +#: awx/settings/defaults.py:630 msgid "Dallas/Ft. Worth" msgstr "Dallas/Ft. Worth" -#: awx/settings/defaults.py:627 +#: awx/settings/defaults.py:631 msgid "Northern Virginia" msgstr "Northern Virginia" -#: awx/settings/defaults.py:628 +#: awx/settings/defaults.py:632 msgid "London" msgstr "London" -#: awx/settings/defaults.py:629 +#: awx/settings/defaults.py:633 msgid "Sydney" msgstr "Sydney" -#: awx/settings/defaults.py:630 +#: awx/settings/defaults.py:634 msgid "Hong Kong" msgstr "Hong Kong" -#: awx/settings/defaults.py:657 +#: awx/settings/defaults.py:661 msgid "US East (Northern Virginia)" msgstr "Este de EE.UU. (Virginia del norte)" -#: awx/settings/defaults.py:658 +#: awx/settings/defaults.py:662 msgid "US East (Ohio)" msgstr "Este de EE.UU. (Ohio)" -#: awx/settings/defaults.py:659 +#: awx/settings/defaults.py:663 msgid "US West (Oregon)" msgstr "Oeste de EE.UU. (Oregón)" -#: awx/settings/defaults.py:660 +#: awx/settings/defaults.py:664 msgid "US West (Northern California)" msgstr "Oeste de EE.UU (California del norte)" -#: awx/settings/defaults.py:661 +#: awx/settings/defaults.py:665 msgid "Canada (Central)" msgstr "Canada (Central)" -#: awx/settings/defaults.py:662 +#: awx/settings/defaults.py:666 msgid "EU (Frankfurt)" msgstr "UE (Fráncfort)" -#: awx/settings/defaults.py:663 +#: awx/settings/defaults.py:667 msgid "EU (Ireland)" msgstr "UE (Irlanda)" -#: awx/settings/defaults.py:664 +#: awx/settings/defaults.py:668 msgid "EU (London)" msgstr "UE (Londres)" -#: awx/settings/defaults.py:665 +#: awx/settings/defaults.py:669 msgid "Asia Pacific (Singapore)" msgstr "Asia Pacífico (Singapur)" -#: awx/settings/defaults.py:666 +#: awx/settings/defaults.py:670 msgid "Asia Pacific (Sydney)" msgstr "Asia Pacífico (Sídney)" -#: awx/settings/defaults.py:667 +#: awx/settings/defaults.py:671 msgid "Asia Pacific (Tokyo)" msgstr "Asia Pacífico (Tokio)" -#: awx/settings/defaults.py:668 +#: awx/settings/defaults.py:672 msgid "Asia Pacific (Seoul)" msgstr "Asia Pacífico (Seúl)" -#: awx/settings/defaults.py:669 +#: awx/settings/defaults.py:673 msgid "Asia Pacific (Mumbai)" msgstr "Asia Pacífico (Bombay)" -#: awx/settings/defaults.py:670 +#: awx/settings/defaults.py:674 msgid "South America (Sao Paulo)" msgstr "América del sur (São Paulo)" -#: awx/settings/defaults.py:671 +#: awx/settings/defaults.py:675 msgid "US West (GovCloud)" msgstr "Oeste de EE.UU. (GovCloud)" -#: awx/settings/defaults.py:672 +#: awx/settings/defaults.py:676 msgid "China (Beijing)" msgstr "China (Pekín)" -#: awx/settings/defaults.py:721 +#: awx/settings/defaults.py:725 msgid "US East (B)" msgstr "Este de EE.UU. (B)" -#: awx/settings/defaults.py:722 +#: awx/settings/defaults.py:726 msgid "US East (C)" msgstr "Este de EE.UU. (C)" -#: awx/settings/defaults.py:723 +#: awx/settings/defaults.py:727 msgid "US East (D)" msgstr "Este de EE.UU. (D)" -#: awx/settings/defaults.py:724 +#: awx/settings/defaults.py:728 msgid "US Central (A)" msgstr "EE.UU. Central (A)" -#: awx/settings/defaults.py:725 +#: awx/settings/defaults.py:729 msgid "US Central (B)" msgstr "EE.UU. Central (B)" -#: awx/settings/defaults.py:726 +#: awx/settings/defaults.py:730 msgid "US Central (C)" msgstr "EE.UU. Central (C)" -#: awx/settings/defaults.py:727 +#: awx/settings/defaults.py:731 msgid "US Central (F)" msgstr "EE.UU. Central (F)" -#: awx/settings/defaults.py:728 +#: awx/settings/defaults.py:732 msgid "Europe West (B)" msgstr "Oeste de Europa (B)" -#: awx/settings/defaults.py:729 +#: awx/settings/defaults.py:733 msgid "Europe West (C)" msgstr "Oeste de Europa (C)" -#: awx/settings/defaults.py:730 +#: awx/settings/defaults.py:734 msgid "Europe West (D)" msgstr "Oeste de Europa (D)" -#: awx/settings/defaults.py:731 +#: awx/settings/defaults.py:735 msgid "Asia East (A)" msgstr "Este de Asia (A)" -#: awx/settings/defaults.py:732 +#: awx/settings/defaults.py:736 msgid "Asia East (B)" msgstr "Este de Asia (B)" -#: awx/settings/defaults.py:733 +#: awx/settings/defaults.py:737 msgid "Asia East (C)" msgstr "Este de Asia (C)" -#: awx/settings/defaults.py:757 +#: awx/settings/defaults.py:761 msgid "US Central" msgstr "EE.UU. Central" -#: awx/settings/defaults.py:758 +#: awx/settings/defaults.py:762 msgid "US East" msgstr "Este de EE.UU." -#: awx/settings/defaults.py:759 +#: awx/settings/defaults.py:763 msgid "US East 2" msgstr "Este de EE.UU. 2" -#: awx/settings/defaults.py:760 +#: awx/settings/defaults.py:764 msgid "US North Central" msgstr "Norte-centro de EE.UU." -#: awx/settings/defaults.py:761 +#: awx/settings/defaults.py:765 msgid "US South Central" msgstr "Sur-Centro de EE.UU." -#: awx/settings/defaults.py:762 +#: awx/settings/defaults.py:766 msgid "US West" msgstr "Oeste de EE.UU." -#: awx/settings/defaults.py:763 +#: awx/settings/defaults.py:767 msgid "Europe North" msgstr "Norte de Europa" -#: awx/settings/defaults.py:764 +#: awx/settings/defaults.py:768 msgid "Europe West" msgstr "Oeste de Europa" -#: awx/settings/defaults.py:765 +#: awx/settings/defaults.py:769 msgid "Asia Pacific East" msgstr "Este de Asia Pacífico" -#: awx/settings/defaults.py:766 +#: awx/settings/defaults.py:770 msgid "Asia Pacific Southeast" msgstr "Sudeste de Asia Pacífico" -#: awx/settings/defaults.py:767 +#: awx/settings/defaults.py:771 msgid "Japan East" msgstr "Este de Japón" -#: awx/settings/defaults.py:768 +#: awx/settings/defaults.py:772 msgid "Japan West" msgstr "Oeste de Japón" -#: awx/settings/defaults.py:769 +#: awx/settings/defaults.py:773 msgid "Brazil South" msgstr "Sur de Brasil" @@ -3068,8 +3115,7 @@ msgstr "Inicio de sesión único (SSO)" #: awx/sso/conf.py:27 msgid "" -"Mapping to organization admins/users from social auth accounts. This " -"setting\n" +"Mapping to organization admins/users from social auth accounts. This setting\n" "controls which users are placed into which Tower organizations based on\n" "their username and email address. Dictionary keys are organization names.\n" "organizations will be created if not present if the license allows for\n" @@ -3081,109 +3127,78 @@ msgid "" "\n" "- admins: None, True/False, string or list of strings.\n" " If None, organization admins will not be updated.\n" -" If True, all users using social auth will automatically be added as " -"admins\n" +" If True, all users using social auth will automatically be added as admins\n" " of the organization.\n" " If False, no social auth users will be automatically added as admins of\n" " the organization.\n" " If a string or list of strings, specifies the usernames and emails for\n" " users who will be added to the organization. Strings in the format\n" -" \"//\" will be interpreted as JavaScript regular " -"expressions and\n" -" may also be used instead of string literals; only \"i\" and \"m\" are " -"supported\n" +" \"//\" will be interpreted as JavaScript regular expressions and\n" +" may also be used instead of string literals; only \"i\" and \"m\" are supported\n" " for flags.\n" "- remove_admins: True/False. Defaults to True.\n" -" If True, a user who does not match will be removed from the " -"organization's\n" +" If True, a user who does not match will be removed from the organization's\n" " administrative list.\n" -"- users: None, True/False, string or list of strings. Same rules apply as " -"for\n" +"- users: None, True/False, string or list of strings. Same rules apply as for\n" " admins.\n" "- remove_users: True/False. Defaults to True. Same rules as apply for \n" " remove_admins." msgstr "" -"Relación de usuarios/administradores de organización desde sus cuentas de " -"autentificación social. \n" -"Esta configuración controla qué usuarios están establecidos dentro de qué " -"organización Tower basándose\n" -"en sus nombre de usuario y dirección de correo. Claves son nombres de " -"organizaciones,serán creados si no existen si la licencia actual permite " -"varias organizaciones.\n" -"Valores son diccionarios que definen opciones para cada miembro de la " -"organización.\n" -" Para cada organización es posible especificar qué usuarios son " -"automáticamente usuarios\n" -"de la organización y también qué usuarios pueden administrar la " -"organización:\n" +"Relación de usuarios/administradores de organización desde sus cuentas de autentificación social. \n" +"Esta configuración controla qué usuarios están establecidos dentro de qué organización Tower basándose\n" +"en sus nombre de usuario y dirección de correo. Claves son nombres de organizaciones,serán creados si no existen si la licencia actual permite varias organizaciones.\n" +"Valores son diccionarios que definen opciones para cada miembro de la organización.\n" +" Para cada organización es posible especificar qué usuarios son automáticamente usuarios\n" +"de la organización y también qué usuarios pueden administrar la organización:\n" "\n" "- admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" " Si None, administradores de organización no serán actualizados.\n" -" Si True, todos los usuarios usando identificación social serán " -"automáticamente\n" +" Si True, todos los usuarios usando identificación social serán automáticamente\n" " añadidos como administradores de la organización.\n" -" Si False, ningún usuario con identificación social será automáticamente " -"añadido\n" +" Si False, ningún usuario con identificación social será automáticamente añadido\n" " como administrador de la organización\n" -" Si una cadena o lista de cadenas, especifica el nombre de usuario y " -"direcciones de correo\n" -" para los usuarios que serán añadidos a la organización. Cadenas en " -"formato\n" -" \"//\" serán interpretados como expresiones regulares de " -"Javascript y\n" -" podría ser utilizadas en vez de cadenas de texto literales; sólo \"i\" y " -"\"m\" están\n" +" Si una cadena o lista de cadenas, especifica el nombre de usuario y direcciones de correo\n" +" para los usuarios que serán añadidos a la organización. Cadenas en formato\n" +" \"//\" serán interpretados como expresiones regulares de Javascript y\n" +" podría ser utilizadas en vez de cadenas de texto literales; sólo \"i\" y \"m\" están\n" " soportadas como modificadores.\n" "- remove_admins: True/False. Por defecto a True.\n" -" Si True, un usuario que no corresponda será eliminado de la lista de " -"administradores\n" +" Si True, un usuario que no corresponda será eliminado de la lista de administradores\n" " de la organización.\n" -"- users: None, True/False, cadena de texto o lista de cadenas de texto. Se " -"aplica\n" +"- users: None, True/False, cadena de texto o lista de cadenas de texto. Se aplica\n" " la misma regla que para admins.\n" -"- remove_users: True/False. Por defecto a True. Se aplican las mismas reglas " -"que\n" +"- remove_users: True/False. Por defecto a True. Se aplican las mismas reglas que\n" " para remove_admins." #: awx/sso/conf.py:76 msgid "" "Mapping of team members (users) from social auth accounts. Keys are team\n" "names (will be created if not present). Values are dictionaries of options\n" -"for each team's membership, where each can contain the following " -"parameters:\n" +"for each team's membership, where each can contain the following parameters:\n" "\n" "- organization: string. The name of the organization to which the team\n" " belongs. The team will be created if the combination of organization and\n" " team name does not exist. The organization will first be created if it\n" -" does not exist. If the license does not allow for multiple " -"organizations,\n" +" does not exist. If the license does not allow for multiple organizations,\n" " the team will always be assigned to the single default organization.\n" "- users: None, True/False, string or list of strings.\n" " If None, team members will not be updated.\n" " If True/False, all social auth users will be added/removed as team\n" " members.\n" -" If a string or list of strings, specifies expressions used to match " -"users.\n" +" If a string or list of strings, specifies expressions used to match users.\n" " User will be added as a team member if the username or email matches.\n" -" Strings in the format \"//\" will be interpreted as " -"JavaScript\n" -" regular expressions and may also be used instead of string literals; only " -"\"i\"\n" +" Strings in the format \"//\" will be interpreted as JavaScript\n" +" regular expressions and may also be used instead of string literals; only \"i\"\n" " and \"m\" are supported for flags.\n" "- remove: True/False. Defaults to True. If True, a user who does not match\n" " the rules above will be removed from the team." msgstr "" -"Relación de miembros de equipo (usuarios) desde sus cuentas de " -"autentificación social. \n" -"Claves son nombres de equipo (serán creados si no existen). Valores son " -"diccionario de opciones\n" -"para cada miembro del equipo, donde cada uno de ellos pueden contener los " -"siguientes parámetros:\n" +"Relación de miembros de equipo (usuarios) desde sus cuentas de autentificación social. \n" +"Claves son nombres de equipo (serán creados si no existen). Valores son diccionario de opciones\n" +"para cada miembro del equipo, donde cada uno de ellos pueden contener los siguientes parámetros:\n" "\n" -"- organization: cadena de texto. El nombre de la organización a la cual el " -"equipo\n" -" pertenece. El equipo será creado si la combinación de nombre de " -"organización y \n" +"- organization: cadena de texto. El nombre de la organización a la cual el equipo\n" +" pertenece. El equipo será creado si la combinación de nombre de organización y \n" " equipo no existe. La organización será primero creada si\n" " no existe. Si la licencia no permite múltiples organizaciones,\n" " el equipo será siempre asignado a una única organización por defecto.\n" @@ -3191,17 +3206,12 @@ msgstr "" " Si None, miembros del equipo no serán actualizados.\n" " Si True/False, todos los usuarios autentificados socialmente serán\n" " añadidos/eliminados como miembros del equipo.\n" -" Si una cadena de texto o lista de cadenas de texto, especifica expresiones " -"a usar\n" -" para encontrar usuarios. Usuario será añadido como miembro del equipo si " -"el nombre de usuario o la dirección de correo electrónica coincide.\n" -" Cadenas de texto en formato \"//\" son interpretadas " -"como\n" -" expresiones regulares JavaScript y podrían ser usadas en vez de cadenas " -"de texto literales:\n" +" Si una cadena de texto o lista de cadenas de texto, especifica expresiones a usar\n" +" para encontrar usuarios. Usuario será añadido como miembro del equipo si el nombre de usuario o la dirección de correo electrónica coincide.\n" +" Cadenas de texto en formato \"//\" son interpretadas como\n" +" expresiones regulares JavaScript y podrían ser usadas en vez de cadenas de texto literales:\n" " sólo \"i\" y \"m\" están soportadas como modificadores (flags).\n" -"- remove: True/False. Por defecto a True. Si True, un usuario que no " -"corresponda\n" +"- remove: True/False. Por defecto a True. Si True, un usuario que no corresponda\n" " con las reglas indicadas anteriormente será eliminado del equipo." #: awx/sso/conf.py:119 @@ -3230,14 +3240,14 @@ msgstr "Autentificación social - Campos usuario" #: awx/sso/conf.py:158 msgid "" -"When set to an empty list `[]`, this setting prevents new user accounts from " -"being created. Only users who have previously logged in using social auth or " -"have a user account with a matching email address will be able to login." +"When set to an empty list `[]`, this setting prevents new user accounts from" +" being created. Only users who have previously logged in using social auth " +"or have a user account with a matching email address will be able to login." msgstr "" "Cuando se establece una lista vacía `[]`, esta configuración previene que " "nuevos usuarios puedan ser creados. Sólo usuarios que previamente han " -"iniciado sesión usando autentificación social o tengan una cuenta de usuario " -"que corresponda con la dirección de correcto podrán iniciar sesión." +"iniciado sesión usando autentificación social o tengan una cuenta de usuario" +" que corresponda con la dirección de correcto podrán iniciar sesión." #: awx/sso/conf.py:176 msgid "LDAP Server URI" @@ -3246,14 +3256,15 @@ msgstr "URI servidor LDAP" #: awx/sso/conf.py:177 msgid "" "URI to connect to LDAP server, such as \"ldap://ldap.example.com:389\" (non-" -"SSL) or \"ldaps://ldap.example.com:636\" (SSL). Multiple LDAP servers may be " -"specified by separating with spaces or commas. LDAP authentication is " +"SSL) or \"ldaps://ldap.example.com:636\" (SSL). Multiple LDAP servers may be" +" specified by separating with spaces or commas. LDAP authentication is " "disabled if this parameter is empty." msgstr "" -"URI para conectar a un servidor LDAP. Por ejemplo \"ldap://ldap.ejemplo." -"com:389\" (no SSL) or \"ldaps://ldap.ejemplo.com:636\" (SSL). Varios " -"servidores LDAP pueden ser especificados separados por espacios o comandos. " -"La autentificación LDAP está deshabilitado si este parámetro está vacío." +"URI para conectar a un servidor LDAP. Por ejemplo " +"\"ldap://ldap.ejemplo.com:389\" (no SSL) or \"ldaps://ldap.ejemplo.com:636\"" +" (SSL). Varios servidores LDAP pueden ser especificados separados por " +"espacios o comandos. La autentificación LDAP está deshabilitado si este " +"parámetro está vacío." #: awx/sso/conf.py:181 awx/sso/conf.py:199 awx/sso/conf.py:211 #: awx/sso/conf.py:223 awx/sso/conf.py:239 awx/sso/conf.py:259 @@ -3275,10 +3286,11 @@ msgid "" "user account we will use to login to query LDAP for other user information." msgstr "" "DN (Distinguished Name) del usuario a enlazar para todas las consultas de " -"búsqueda. Normalmente en formato \"CN=Algun usuario,OU=Usuarios,DC=ejemplo," -"DC=com\" pero podría ser también especificado como \"DOMINIO\\usuario\" para " -"Active Directory. Ésta es la cuenta de usuario que será utilizada para " -"iniciar sesión para consultar LDAP para la información de otro usuario." +"búsqueda. Normalmente en formato \"CN=Algun " +"usuario,OU=Usuarios,DC=ejemplo,DC=com\" pero podría ser también especificado" +" como \"DOMINIO\\usuario\" para Active Directory. Ésta es la cuenta de " +"usuario que será utilizada para iniciar sesión para consultar LDAP para la " +"información de otro usuario." #: awx/sso/conf.py:209 msgid "LDAP Bind Password" @@ -3304,16 +3316,16 @@ msgstr "Opciones de conexión a LDAP" msgid "" "Additional options to set for the LDAP connection. LDAP referrals are " "disabled by default (to prevent certain LDAP queries from hanging with AD). " -"Option names should be strings (e.g. \"OPT_REFERRALS\"). Refer to https://" -"www.python-ldap.org/doc/html/ldap.html#options for possible options and " -"values that can be set." +"Option names should be strings (e.g. \"OPT_REFERRALS\"). Refer to " +"https://www.python-ldap.org/doc/html/ldap.html#options for possible options " +"and values that can be set." msgstr "" "Opciones adicionales a establecer para la conexión LDAP. Referenciadores " "LDAP están deshabilitados por defecto (para prevenir que ciertas consultas " "LDAP se bloqueen con AD). Los nombres de las opciones deben ser cadenas de " -"texto (p.e. \"OPT_REFERRALS\"). Acuda a https://www.python-ldap.org/doc/html/" -"ldap.html#options para posibles opciones y valores que pueden ser " -"establecidos." +"texto (p.e. \"OPT_REFERRALS\"). Acuda a https://www.python-" +"ldap.org/doc/html/ldap.html#options para posibles opciones y valores que " +"pueden ser establecidos." #: awx/sso/conf.py:252 msgid "LDAP User Search" @@ -3325,7 +3337,8 @@ msgid "" "will be able to login to Tower. The user should also be mapped into an " "Tower organization (as defined in the AUTH_LDAP_ORGANIZATION_MAP setting). " "If multiple search queries need to be supported use of \"LDAPUnion\" is " -"possible. See python-ldap documentation as linked at the top of this section." +"possible. See python-ldap documentation as linked at the top of this " +"section." msgstr "" "Consulta de búsqueda LDAP para la búsqueda de usuarios. Cualquier usuario " "que coincida con el patrón dado será capaz de iniciar sesión en Tower. El " @@ -3358,8 +3371,8 @@ msgstr "Mapa de atributos de usuario LDAP" #: awx/sso/conf.py:292 msgid "" "Mapping of LDAP user schema to Tower API user attributes (key is user " -"attribute name, value is LDAP attribute name). The default setting is valid " -"for ActiveDirectory but users with other LDAP configurations may need to " +"attribute name, value is LDAP attribute name). The default setting is valid" +" for ActiveDirectory but users with other LDAP configurations may need to " "change the values (not the keys) of the dictionary/hash-table." msgstr "" "Relación del esquema de usuarios LDAP a Atributos de usuario Tower API " @@ -3374,12 +3387,12 @@ msgstr "Búsqueda de grupos LDAP" #: awx/sso/conf.py:312 msgid "" -"Users in Tower are mapped to organizations based on their membership in LDAP " -"groups. This setting defines the LDAP search query to find groups. Note that " -"this, unlike the user search above, does not support LDAPSearchUnion." +"Users in Tower are mapped to organizations based on their membership in LDAP" +" groups. This setting defines the LDAP search query to find groups. Note " +"that this, unlike the user search above, does not support LDAPSearchUnion." msgstr "" -"Usuarios en Tower son enlazados a la organización basado en su pertenencia a " -"grupos LDAP. Esta configuración define la consulta de búsqueda LDAP para " +"Usuarios en Tower son enlazados a la organización basado en su pertenencia a" +" grupos LDAP. Esta configuración define la consulta de búsqueda LDAP para " "encontrar grupos. Tenga en cuenta que esto, contrariamente que la búsqueda " "superior, no soporta LDAPSearchUnion." @@ -3389,12 +3402,12 @@ msgstr "Tipo de grupo LDAP" #: awx/sso/conf.py:330 msgid "" -"The group type may need to be changed based on the type of the LDAP server. " -"Values are listed at: http://pythonhosted.org/django-auth-ldap/groups." -"html#types-of-groups" +"The group type may need to be changed based on the type of the LDAP server." +" Values are listed at: http://pythonhosted.org/django-auth-ldap/groups.html" +"#types-of-groups" msgstr "" -"El tipo de grupo es necesario ser cambiado basado en el tipo del servidor de " -"LDAP. Valores posibles listados en: http://pythonhosted.org/django-auth-" +"El tipo de grupo es necesario ser cambiado basado en el tipo del servidor de" +" LDAP. Valores posibles listados en: http://pythonhosted.org/django-auth-" "ldap/groups.html#types-of-groups" #: awx/sso/conf.py:345 @@ -3423,27 +3436,29 @@ msgid "" "if a member of this group. Only one deny group is supported." msgstr "" "Grupo DN no permitido para iniciar sesión. SI se especifica, el usuario no " -"podrá iniciar sesión si es miembro de este grupo. Sólo un grupo no permitido " -"está soportado." +"podrá iniciar sesión si es miembro de este grupo. Sólo un grupo no permitido" +" está soportado." #: awx/sso/conf.py:376 msgid "LDAP User Flags By Group" msgstr "Indicadores de usuario LDAP por grupo" #: awx/sso/conf.py:377 +#, fuzzy msgid "" "User profile flags updated from group membership (key is user attribute " "name, value is group DN). These are boolean fields that are matched based " "on whether the user is a member of the given group. So far only " -"is_superuser is settable via this method. This flag is set both true and " -"false at login time based on current LDAP settings." +"is_superuser and is_system_auditor are settable via this method. This flag " +"is set both true and false at login time based on current LDAP settings." msgstr "" -"Indicadores del perfil de usuario actualizado desde la pertenencia del grupo " -"(clave es el nombre de atributo del usuario, valor es el grupo DN). Éstos " +"Indicadores del perfil de usuario actualizado desde la pertenencia del grupo" +" (clave es el nombre de atributo del usuario, valor es el grupo DN). Éstos " "son campos booleanos en los que se basa si el usuario es miembro del grupo " -"especificado. Hasta ahora sólo is_superuser es configurable utilizando este " -"método. El indicador establece a verdadero o falso en el momento de inicio " -"de sesión basándose en la actual configuración LDAP." +"especificado. Hasta ahora sólo is_superuser y is_system_auditor son " +"configurables utilizando este método. El indicador establece a verdadero o " +"falso en el momento de inicio de sesión basándose en la actual configuración" +" LDAP." #: awx/sso/conf.py:395 msgid "LDAP Organization Map" @@ -3451,56 +3466,29 @@ msgstr "Mapa de organización LDAP" #: awx/sso/conf.py:396 msgid "" -"Mapping between organization admins/users and LDAP groups. This controls " -"what users are placed into what Tower organizations relative to their LDAP " -"group memberships. Keys are organization names. Organizations will be " -"created if not present. Values are dictionaries defining the options for " -"each organization's membership. For each organization it is possible to " -"specify what groups are automatically users of the organization and also " -"what groups can administer the organization.\n" +"Mapping between organization admins/users and LDAP groups. This controls what users are placed into what Tower organizations relative to their LDAP group memberships. Keys are organization names. Organizations will be created if not present. Values are dictionaries defining the options for each organization's membership. For each organization it is possible to specify what groups are automatically users of the organization and also what groups can administer the organization.\n" "\n" " - admins: None, True/False, string or list of strings.\n" " If None, organization admins will not be updated based on LDAP values.\n" -" If True, all users in LDAP will automatically be added as admins of the " -"organization.\n" -" If False, no LDAP users will be automatically added as admins of the " -"organization.\n" -" If a string or list of strings, specifies the group DN(s) that will be " -"added of the organization if they match any of the specified groups.\n" +" If True, all users in LDAP will automatically be added as admins of the organization.\n" +" If False, no LDAP users will be automatically added as admins of the organization.\n" +" If a string or list of strings, specifies the group DN(s) that will be added of the organization if they match any of the specified groups.\n" " - remove_admins: True/False. Defaults to True.\n" -" If True, a user who is not an member of the given groups will be removed " -"from the organization's administrative list.\n" -" - users: None, True/False, string or list of strings. Same rules apply as " -"for admins.\n" -" - remove_users: True/False. Defaults to True. Same rules apply as for " -"remove_admins." +" If True, a user who is not an member of the given groups will be removed from the organization's administrative list.\n" +" - users: None, True/False, string or list of strings. Same rules apply as for admins.\n" +" - remove_users: True/False. Defaults to True. Same rules apply as for remove_admins." msgstr "" -"Relación entre administradores/usuarios de la organización y grupos LDAP. " -"Esto controla qué usuarios son establecidos dentro de qué organización Tower " -"dependiendo de sus pertenencias a grupos LDAP. Clave son nombres de " -"organización. Organizaciones serán creados si no existen. Valores son " -"diccionarios definiendo las opciones para cada miembro de la organización. " -"Para cada organización es posible especificar qué grupos son automáticamente " -"usuarios de la organización y también qué grupos pueden administrar la " -"organización.\n" +"Relación entre administradores/usuarios de la organización y grupos LDAP. Esto controla qué usuarios son establecidos dentro de qué organización Tower dependiendo de sus pertenencias a grupos LDAP. Clave son nombres de organización. Organizaciones serán creados si no existen. Valores son diccionarios definiendo las opciones para cada miembro de la organización. Para cada organización es posible especificar qué grupos son automáticamente usuarios de la organización y también qué grupos pueden administrar la organización.\n" "\n" " - admins: None, True/False, cadena de texto o lista de cadenas de texto.\n" -" Si None, administradores de organización no podrán ser actualizados " -"basándose con los valores LDAP.\n" -" Si True, todos los usuarios en LDAP serán automáticamente añadidos como " -"administradores de la organización.\n" -" Si False, ningún usuario LDAP será automáticamente añadido como " -"administrador de la organización.\n" -" Si una cadena o lista de cadenas de texto, especifica el grupo DN(s) que " -"serán añadidos de la organización si ellos corresponden a alguno de los " -"grupos especificados.\n" +" Si None, administradores de organización no podrán ser actualizados basándose con los valores LDAP.\n" +" Si True, todos los usuarios en LDAP serán automáticamente añadidos como administradores de la organización.\n" +" Si False, ningún usuario LDAP será automáticamente añadido como administrador de la organización.\n" +" Si una cadena o lista de cadenas de texto, especifica el grupo DN(s) que serán añadidos de la organización si ellos corresponden a alguno de los grupos especificados.\n" " - remove_admins: True/False. Por defecto a True.\n" -" Si True, un usuario que no es miembro de los grupos especificados será " -"eliminado de la lista administrativa de la organización.\n" -" - users: None, True/False, string o lista de cadena de texto. Se aplican " -"las mismas reglas que para adminss.\n" -" - remove_users: True/False. Por defecto a True. Se aplica las mismas reglas " -"que para remove_admins." +" Si True, un usuario que no es miembro de los grupos especificados será eliminado de la lista administrativa de la organización.\n" +" - users: None, True/False, string o lista de cadena de texto. Se aplican las mismas reglas que para adminss.\n" +" - remove_users: True/False. Por defecto a True. Se aplica las mismas reglas que para remove_admins." #: awx/sso/conf.py:444 msgid "LDAP Team Map" @@ -3508,39 +3496,23 @@ msgstr "Mapa de equipos LDAP" #: awx/sso/conf.py:445 msgid "" -"Mapping between team members (users) and LDAP groups. Keys are team names " -"(will be created if not present). Values are dictionaries of options for " -"each team's membership, where each can contain the following parameters:\n" +"Mapping between team members (users) and LDAP groups. Keys are team names (will be created if not present). Values are dictionaries of options for each team's membership, where each can contain the following parameters:\n" "\n" -" - organization: string. The name of the organization to which the team " -"belongs. The team will be created if the combination of organization and " -"team name does not exist. The organization will first be created if it does " -"not exist.\n" +" - organization: string. The name of the organization to which the team belongs. The team will be created if the combination of organization and team name does not exist. The organization will first be created if it does not exist.\n" " - users: None, True/False, string or list of strings.\n" " If None, team members will not be updated.\n" " If True/False, all LDAP users will be added/removed as team members.\n" -" If a string or list of strings, specifies the group DN(s). User will be " -"added as a team member if the user is a member of ANY of these groups.\n" -"- remove: True/False. Defaults to True. If True, a user who is not a member " -"of the given groups will be removed from the team." +" If a string or list of strings, specifies the group DN(s). User will be added as a team member if the user is a member of ANY of these groups.\n" +"- remove: True/False. Defaults to True. If True, a user who is not a member of the given groups will be removed from the team." msgstr "" -"Relación entre miembros del equipo (usuarios) y grupos LDAP. Claves son " -"nombres de equipo (serán creados si no existen). Valores son diccionarios de " -"opciones para cada miembro del equipo, donde cada uno puede contener alguno " -"de los siguientes parámetros:\n" +"Relación entre miembros del equipo (usuarios) y grupos LDAP. Claves son nombres de equipo (serán creados si no existen). Valores son diccionarios de opciones para cada miembro del equipo, donde cada uno puede contener alguno de los siguientes parámetros:\n" "\n" -" - organization: cadena de texto. El nombre de la organización a la cual el " -"equipo pertenece. El equipo será creado si la combinación de organización y " -"equipo no existen. La organización será creada primera si no existe.\n" +" - organization: cadena de texto. El nombre de la organización a la cual el equipo pertenece. El equipo será creado si la combinación de organización y equipo no existen. La organización será creada primera si no existe.\n" " - users: None, True/False, cadena o lista de cadenas.\n" " Si None, miembros del equipo no serán actualizados.\n" -" Si True/False, todos los usuarios LDAP serán añadidos/eliminados como " -"miembros del equipo.\n" -" Si una cadena de texto o lista de cadenas de texto, especifica el grupo " -"(DN)s. Usuario será añadido como miembro del equipo si el usuario es miembro " -"de ALGUNO de esos grupos.\n" -"- remove: True/False. Por defecto True. Si True, un usuario que no es " -"miembro del grupo proporcionado será eliminado del equipo." +" Si True/False, todos los usuarios LDAP serán añadidos/eliminados como miembros del equipo.\n" +" Si una cadena de texto o lista de cadenas de texto, especifica el grupo (DN)s. Usuario será añadido como miembro del equipo si el usuario es miembro de ALGUNO de esos grupos.\n" +"- remove: True/False. Por defecto True. Si True, un usuario que no es miembro del grupo proporcionado será eliminado del equipo." #: awx/sso/conf.py:488 msgid "RADIUS Server" @@ -3548,8 +3520,8 @@ msgstr "Servidor RADIUS" #: awx/sso/conf.py:489 msgid "" -"Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this " -"setting is empty." +"Hostname/IP of RADIUS server. RADIUS authentication will be disabled if this" +" setting is empty." msgstr "" "Hostname/IP del servidor RADIUS. La autentificación RADIUS se deshabilitará " "si esta configuración está vacía." @@ -3584,8 +3556,8 @@ msgid "" "OAuth2 key and secret for a web application. Ensure that the Google+ API is " "enabled. Provide this URL as the callback URL for your application." msgstr "" -"Crear un proyecto en https://console.developers.google.com/ para obtener una " -"clave OAuth2 y clave secreta para una aplicación web. Asegúrese que la API " +"Crear un proyecto en https://console.developers.google.com/ para obtener una" +" clave OAuth2 y clave secreta para una aplicación web. Asegúrese que la API " "de Google+ API está habilitada. Proporcione esta URL como URL callback para " "su aplicación." @@ -3601,11 +3573,11 @@ msgstr "Clave Google OAuth2" #: awx/sso/conf.py:547 msgid "" -"The OAuth2 key from your web application at https://console.developers." -"google.com/." +"The OAuth2 key from your web application at " +"https://console.developers.google.com/." msgstr "" -"La clave OAuth2 de su dirección web en https://console.developers.google." -"com/." +"La clave OAuth2 de su dirección web en " +"https://console.developers.google.com/." #: awx/sso/conf.py:557 msgid "Google OAuth2 Secret" @@ -3613,11 +3585,11 @@ msgstr "Clave secreta para Google OAuth2" #: awx/sso/conf.py:558 msgid "" -"The OAuth2 secret from your web application at https://console.developers." -"google.com/." +"The OAuth2 secret from your web application at " +"https://console.developers.google.com/." msgstr "" -"La clave secreta OAuth2 de su dirección web en https://console.developers." -"google.com/." +"La clave secreta OAuth2 de su dirección web en " +"https://console.developers.google.com/." #: awx/sso/conf.py:569 msgid "Google OAuth2 Whitelisted Domains" @@ -3642,10 +3614,10 @@ msgid "" "display any other accounts even if the user is logged in with multiple " "Google accounts." msgstr "" -"Argumentos adicionales para iniciar sesión con Google OAuth2. Cuando sólo se " -"permite un único dominio para autentificar, establecer a `{\"hd\": " -"\"sudominio.com\"}` y Google no mostrará otras cuentas incluso si el usuario " -"inició sesión en múltiple cuentas Google." +"Argumentos adicionales para iniciar sesión con Google OAuth2. Cuando sólo se" +" permite un único dominio para autentificar, establecer a `{\"hd\": " +"\"sudominio.com\"}` y Google no mostrará otras cuentas incluso si el usuario" +" inició sesión en múltiple cuentas Google." #: awx/sso/conf.py:596 msgid "Google OAuth2 Organization Map" @@ -3708,15 +3680,15 @@ msgstr "OAuth2 URL Callback para organización Github" #: awx/sso/conf.py:689 awx/sso/conf.py:764 msgid "" -"Create an organization-owned application at https://github.com/organizations/" -"/settings/applications and obtain an OAuth2 key (Client ID) and " -"secret (Client Secret). Provide this URL as the callback URL for your " -"application." +"Create an organization-owned application at " +"https://github.com/organizations//settings/applications and obtain " +"an OAuth2 key (Client ID) and secret (Client Secret). Provide this URL as " +"the callback URL for your application." msgstr "" -"Crear una aplicación propia de la organización en https://github.com/" -"organizations//settings/applications y obtener una clave OAuth2 (ID " -"del cliente ) y clave secreta (Clave secreta del cliente). Proporcione esta " -"URL como URL callback para su aplicación." +"Crear una aplicación propia de la organización en " +"https://github.com/organizations//settings/applications y " +"obtener una clave OAuth2 (ID del cliente ) y clave secreta (Clave secreta " +"del cliente). Proporcione esta URL como URL callback para su aplicación." #: awx/sso/conf.py:693 awx/sso/conf.py:704 awx/sso/conf.py:714 #: awx/sso/conf.py:726 awx/sso/conf.py:737 awx/sso/conf.py:749 @@ -3753,7 +3725,7 @@ msgid "" "https://github.com//." msgstr "" "El nombre de su organización de su GitHub, el utilizado en su URL de " -"organización: https://github.com//." +"organización: https://github.com//." #: awx/sso/conf.py:735 msgid "GitHub Organization OAuth2 Organization Map" @@ -3786,8 +3758,8 @@ msgstr "ID de equipo GitHub" #: awx/sso/conf.py:799 msgid "" -"Find the numeric team ID using the Github API: http://fabian-kostadinov." -"github.io/2015/01/16/how-to-find-a-github-team-id/." +"Find the numeric team ID using the Github API: http://fabian-" +"kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/." msgstr "" "Encuentre su identificador numérico de equipo utilizando la API de GitHub: " "http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/." @@ -3806,15 +3778,15 @@ msgstr "URL callback OAuth2 para Azure AD" #: awx/sso/conf.py:839 msgid "" -"Register an Azure AD application as described by https://msdn.microsoft.com/" -"en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " +"Register an Azure AD application as described by https://msdn.microsoft.com" +"/en-us/library/azure/dn132599.aspx and obtain an OAuth2 key (Client ID) and " "secret (Client Secret). Provide this URL as the callback URL for your " "application." msgstr "" -"Registrar una aplicacción AZURE AD como es descrito en https://msdn." -"microsoft.com/en-us/library/azure/dn132599.aspx y obtén una clave OAuth2 (ID " -"de client) y clave secreta (Clave secreta de cliente). Proporcione esta URL " -"como URL callback para su aplicación." +"Registrar una aplicacción AZURE AD como es descrito en " +"https://msdn.microsoft.com/en-us/library/azure/dn132599.aspx y obtén una " +"clave OAuth2 (ID de client) y clave secreta (Clave secreta de cliente). " +"Proporcione esta URL como URL callback para su aplicación." #: awx/sso/conf.py:843 awx/sso/conf.py:854 awx/sso/conf.py:864 #: awx/sso/conf.py:876 awx/sso/conf.py:888 @@ -3858,8 +3830,8 @@ msgid "" "your application." msgstr "" "Registrar Tower como un proveedor de servicio (SP) con cada proveedor de " -"identificación (IdP) que ha configurado. Proporcione su ID de identidad SP y " -"esta dirección URL callback para su aplicación." +"identificación (IdP) que ha configurado. Proporcione su ID de identidad SP y" +" esta dirección URL callback para su aplicación." #: awx/sso/conf.py:911 awx/sso/conf.py:925 awx/sso/conf.py:938 #: awx/sso/conf.py:952 awx/sso/conf.py:966 awx/sso/conf.py:984 @@ -3898,8 +3870,8 @@ msgstr "Certificado público del proveedor de servicio SAML" #: awx/sso/conf.py:950 msgid "" -"Create a keypair for Tower to use as a service provider (SP) and include the " -"certificate content here." +"Create a keypair for Tower to use as a service provider (SP) and include the" +" certificate content here." msgstr "" "Crear par de claves para Tower a usar como proveedor de servicio (SP) e " "incluir el contenido del certificado aquí." @@ -3910,8 +3882,8 @@ msgstr "Clave privada del proveedor de servicio SAML" #: awx/sso/conf.py:964 msgid "" -"Create a keypair for Tower to use as a service provider (SP) and include the " -"private key content here." +"Create a keypair for Tower to use as a service provider (SP) and include the" +" private key content here." msgstr "" "Crear par de claves para Tower a usar como proveedor de servicio (SP) e " "incluir el contenido de la clave privada aquí." @@ -3944,16 +3916,17 @@ msgstr "Proveedores de identidad habilitados SAML" msgid "" "Configure the Entity ID, SSO URL and certificate for each identity provider " "(IdP) in use. Multiple SAML IdPs are supported. Some IdPs may provide user " -"data using attribute names that differ from the default OIDs (https://github." -"com/omab/python-social-auth/blob/master/social/backends/saml.py#L16). " -"Attribute names may be overridden for each IdP." +"data using attribute names that differ from the default OIDs " +"(https://github.com/omab/python-social-" +"auth/blob/master/social/backends/saml.py#L16). Attribute names may be " +"overridden for each IdP." msgstr "" "Configurar el ID de entidad, URL SSO y certificado para cada proveedor de " "identidad (IdP) en uso. Varios IdPs SAML están soportadas. Algunos IdPs " "pueden proporcionar datos de usuario usando nombres de atributos diferentes " -"a los valores por defecto OIDs (https://github.com/omab/python-social-auth/" -"blob/master/social/backends/saml.py#L16). Nombres de atributos pueden ser " -"redefinidos por cada IdP." +"a los valores por defecto OIDs (https://github.com/omab/python-social-" +"auth/blob/master/social/backends/saml.py#L16). Nombres de atributos pueden " +"ser redefinidos por cada IdP." #: awx/sso/conf.py:1077 msgid "SAML Organization Map" @@ -4014,8 +3987,8 @@ msgstr "Indicador de usuario inválido: \"{invalid_flag}\"." #: awx/sso/fields.py:339 awx/sso/fields.py:506 msgid "" -"Expected None, True, False, a string or list of strings but got {input_type} " -"instead." +"Expected None, True, False, a string or list of strings but got {input_type}" +" instead." msgstr "" "Esperado None, True, False, una cadena de texto o una lista de cadenas de " "texto pero en cambio se obtuvo {input_type}" @@ -4116,11 +4089,11 @@ msgstr "Especificar un formato para una petición GET" #: awx/templates/rest_framework/base.html:86 #, python-format msgid "" -"Make a GET request on the %(name)s resource with the format set to `" -"%(format)s`" +"Make a GET request on the %(name)s resource with the format set to " +"`%(format)s`" msgstr "" -"Realizar una petición GET en el recurso %(name)s con el formato establecido " -"a `%(format)s`" +"Realizar una petición GET en el recurso %(name)s con el formato establecido" +" a `%(format)s`" #: awx/templates/rest_framework/base.html:100 #, python-format @@ -4184,8 +4157,8 @@ msgstr "Información personalizada de inicio de sesión" #: awx/ui/conf.py:32 msgid "" "If needed, you can add specific information (such as a legal notice or a " -"disclaimer) to a text box in the login modal using this setting. Any content " -"added must be in plain text, as custom HTML or other markup languages are " +"disclaimer) to a text box in the login modal using this setting. Any content" +" added must be in plain text, as custom HTML or other markup languages are " "not supported. If multiple paragraphs of text are needed, new lines " "(paragraphs) must be escaped as `\\n` within the block of text." msgstr "" @@ -4202,13 +4175,13 @@ msgstr "Logo personalizado" #: awx/ui/conf.py:49 msgid "" -"To set up a custom logo, provide a file that you create. For the custom logo " -"to look its best, use a .png file with a transparent background. GIF, PNG " +"To set up a custom logo, provide a file that you create. For the custom logo" +" to look its best, use a .png file with a transparent background. GIF, PNG " "and JPEG formats are supported." msgstr "" -"Para configurar un logo personalizado, proporcione un fichero que ha creado. " -"Para que los logos personalizados se vean mejor, utilice un fichero .png con " -"fondo transparente. Formatos GIF, PNG y JPEG están soportados." +"Para configurar un logo personalizado, proporcione un fichero que ha creado." +" Para que los logos personalizados se vean mejor, utilice un fichero .png " +"con fondo transparente. Formatos GIF, PNG y JPEG están soportados." #: awx/ui/fields.py:29 msgid "" @@ -4224,8 +4197,9 @@ msgstr "Dato codificado en base64 inválido en la URL de datos" #: awx/ui/templates/ui/index.html:49 msgid "" -"Your session will expire in 60 seconds, would you like to continue?" +"Your session will expire in 60 seconds, would you like to " +"continue?" msgstr "" "Su sesión caducará en 60 segundos, ¿Le gustaría continuar?" @@ -4240,36 +4214,31 @@ msgstr "Establecer cuántos días de datos debería ser retenidos." #: awx/ui/templates/ui/index.html:122 msgid "" -"Please enter an integer that is not " +"Please enter an integer that is not " "negative that is lower than 9999." +"prompt_for_days_form.days_to_keep.$error.max\"> that is lower than " +"9999." msgstr "" -"Por favor introduzca un entero que " -"no sea negativo que sea menor de " +"Por favor introduzca un entero que no sea " +"negativo que sea menor de " "9999." #: awx/ui/templates/ui/index.html:127 msgid "" -"For facts collected older than the time period specified, save one fact scan " -"(snapshot) per time window (frequency). For example, facts older than 30 " -"days are purged, while one weekly fact scan is kept.\n" +"For facts collected older than the time period specified, save one fact scan (snapshot) per time window (frequency). For example, facts older than 30 days are purged, while one weekly fact scan is kept.\n" "
\n" -"
CAUTION: Setting both numerical variables to \"0\" " -"will delete all facts.\n" +"
CAUTION: Setting both numerical variables to \"0\" will delete all facts.\n" "
\n" "
" msgstr "" -"Para facts obtenidos más antiguos que el periodo especificado, guarda un " -"escanéo de facts (instantánea [snapshot]) por una ventana de tiempo " -"(frecuencia). Por ejemplo, facts más antiguos de 30 días son eliminados, " -"mientras que escaneo de facts de una semana son mantenidos.\n" +"Para facts obtenidos más antiguos que el periodo especificado, guarda un escanéo de facts (instantánea [snapshot]) por una ventana de tiempo (frecuencia). Por ejemplo, facts más antiguos de 30 días son eliminados, mientras que escaneo de facts de una semana son mantenidos.\n" "
\n" -"
CUIDADO: Ajustar ambas variables numéricas a \"0\" " -"eliminará todos los facts.\n" +"
CUIDADO: Ajustar ambas variables numéricas a \"0\" eliminará todos los facts.\n" "
\n" "
" @@ -4281,17 +4250,19 @@ msgstr "" #: awx/ui/templates/ui/index.html:150 msgid "" -"Please enter an integer " -"that is not negative " -"that is lower than 9999." +"Please enter an integer that is not " +"negative that is lower than " +"9999." msgstr "" -"Por favor introduzca un entero " -"que no sea negativo " -"que sea menor 9999." +"Por favor introduzca un entero que no sea " +"negativo que sea menor " +"9999." #: awx/ui/templates/ui/index.html:155 msgid "Select a frequency for snapshot retention" @@ -4300,16 +4271,18 @@ msgstr "" #: awx/ui/templates/ui/index.html:169 msgid "" -"Please enter an integer that is not negative that is not" +" negative that is " "lower than 9999." msgstr "" -"Por favor introduzca un entero que no sea negativo que no sea " +"negativo que sea " "menor de 9999." diff --git a/awx/main/management/commands/run_fact_cache_receiver.py b/awx/main/management/commands/run_fact_cache_receiver.py index 5a111c6fa2..f7d843d5fa 100644 --- a/awx/main/management/commands/run_fact_cache_receiver.py +++ b/awx/main/management/commands/run_fact_cache_receiver.py @@ -61,12 +61,15 @@ class FactBrokerWorker(ConsumerMixin): host_obj = Host.objects.get(name=hostname, inventory__id=inventory_id) except Fact.DoesNotExist: logger.warn('Failed to intake fact. Host does not exist <%s, %s>' % (hostname, inventory_id)) + message.ack() return except Fact.MultipleObjectsReturned: logger.warn('Database inconsistent. Multiple Hosts found for <%s, %s>.' % (hostname, inventory_id)) + message.ack() return None except Exception as e: logger.error("Exception communicating with Fact Cache Database: %s" % str(e)) + message.ack() return None (module_name, facts) = self.process_facts(facts_data) @@ -84,6 +87,7 @@ class FactBrokerWorker(ConsumerMixin): logger.info('Created new fact <%s, %s>' % (fact_obj.id, module_name)) analytics_logger.info('Received message with fact data', extra=dict( module_name=module_name, facts_data=facts)) + message.ack() return fact_obj diff --git a/awx/main/migrations/0037_v313_instance_version.py b/awx/main/migrations/0037_v313_instance_version.py new file mode 100644 index 0000000000..64c520ea85 --- /dev/null +++ b/awx/main/migrations/0037_v313_instance_version.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0036_v311_insights'), + ] + + operations = [ + migrations.AddField( + model_name='instance', + name='version', + field=models.CharField(max_length=24, blank=True), + ), + ] diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index cb01d03722..2a75f1440a 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -26,6 +26,7 @@ class Instance(models.Model): hostname = models.CharField(max_length=250, unique=True) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) + version = models.CharField(max_length=24, blank=True) capacity = models.PositiveIntegerField( default=100, editable=False, diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 73a3ce6bdd..3dc8b3dd1b 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -596,7 +596,7 @@ class Job(UnifiedJob, JobOptions, SurveyJobMixin, JobNotificationMixin): playbook=self.playbook, credential=self.credential.name if self.credential else None, limit=self.limit, - extra_vars=self.extra_vars, + extra_vars=self.display_extra_vars(), hosts=all_hosts)) return data diff --git a/awx/main/models/mixins.py b/awx/main/models/mixins.py index e818b5b648..f767586eff 100644 --- a/awx/main/models/mixins.py +++ b/awx/main/models/mixins.py @@ -1,5 +1,6 @@ # Python import json +from copy import copy # Django from django.db import models @@ -28,9 +29,7 @@ class ResourceMixin(models.Model): ''' Use instead of `MyModel.objects` when you want to only consider resources that a user has specific permissions for. For example: - MyModel.accessible_objects(user, 'read_role').filter(name__istartswith='bar'); - NOTE: This should only be used for list type things. If you have a specific resource you want to check permissions on, it is more performant to resolve the resource in question then call @@ -159,12 +158,13 @@ class SurveyJobTemplateMixin(models.Model): errors.append("Value %s for '%s' expected to be a string." % (data[survey_element['variable']], survey_element['variable'])) return errors - if 'min' in survey_element and survey_element['min'] not in ["", None] and len(data[survey_element['variable']]) < int(survey_element['min']): - errors.append("'%s' value %s is too small (length is %s must be at least %s)." % - (survey_element['variable'], data[survey_element['variable']], len(data[survey_element['variable']]), survey_element['min'])) - if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']): - errors.append("'%s' value %s is too large (must be no more than %s)." % - (survey_element['variable'], data[survey_element['variable']], survey_element['max'])) + if not data[survey_element['variable']] == '$encrypted$' and not survey_element['type'] == 'password': + if 'min' in survey_element and survey_element['min'] not in ["", None] and len(data[survey_element['variable']]) < int(survey_element['min']): + errors.append("'%s' value %s is too small (length is %s must be at least %s)." % + (survey_element['variable'], data[survey_element['variable']], len(data[survey_element['variable']]), survey_element['min'])) + if 'max' in survey_element and survey_element['max'] not in ["", None] and len(data[survey_element['variable']]) > int(survey_element['max']): + errors.append("'%s' value %s is too large (must be no more than %s)." % + (survey_element['variable'], data[survey_element['variable']], survey_element['max'])) elif survey_element['type'] == 'integer': if survey_element['variable'] in data: if type(data[survey_element['variable']]) != int: @@ -196,16 +196,22 @@ class SurveyJobTemplateMixin(models.Model): if type(data[survey_element['variable']]) != list: errors.append("'%s' value is expected to be a list." % survey_element['variable']) else: + choice_list = copy(survey_element['choices']) + if isinstance(choice_list, basestring): + choice_list = choice_list.split('\n') for val in data[survey_element['variable']]: - if val not in survey_element['choices']: + if val not in choice_list: errors.append("Value %s for '%s' expected to be one of %s." % (val, survey_element['variable'], - survey_element['choices'])) + choice_list)) elif survey_element['type'] == 'multiplechoice': + choice_list = copy(survey_element['choices']) + if isinstance(choice_list, basestring): + choice_list = choice_list.split('\n') if survey_element['variable'] in data: - if data[survey_element['variable']] not in survey_element['choices']: + if data[survey_element['variable']] not in choice_list: errors.append("Value %s for '%s' expected to be one of %s." % (data[survey_element['variable']], survey_element['variable'], - survey_element['choices'])) + choice_list)) return errors def survey_variable_validation(self, data): diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index 1de195d08e..7b539ca39f 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -204,6 +204,12 @@ class ProjectOptions(models.Model): break return sorted(results, key=lambda x: smart_str(x).lower()) + def get_lock_file(self): + proj_path = self.get_project_path() + if not proj_path: + return None + return proj_path + '.lock' + class Project(UnifiedJobTemplate, ProjectOptions, ResourceMixin): ''' diff --git a/awx/main/tasks.py b/awx/main/tasks.py index 9f80b2f986..58bf153316 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -21,7 +21,9 @@ import traceback import urlparse import uuid from distutils.version import LooseVersion as Version +from datetime import timedelta import yaml +import fcntl try: import psutil except: @@ -46,6 +48,7 @@ from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist # AWX +from awx import __version__ as tower_application_version from awx.main.constants import CLOUD_PROVIDERS from awx.main.models import * # noqa from awx.main.models.unified_jobs import ACTIVE_STATES @@ -54,7 +57,7 @@ from awx.main.task_engine import TaskEnhancer from awx.main.utils import (get_ansible_version, get_ssh_version, decrypt_field, update_scm_url, check_proot_installed, build_proot_temp_dir, wrap_args_with_proot, get_system_task_capacity, OutputEventFilter, parse_yaml_or_json) -from awx.main.utils.reload import restart_local_services +from awx.main.utils.reload import restart_local_services, stop_local_services from awx.main.utils.handlers import configure_external_logger from awx.main.consumers import emit_channel_notification @@ -175,13 +178,27 @@ def purge_old_stdout_files(self): @task(bind=True) def cluster_node_heartbeat(self): logger.debug("Cluster node heartbeat task.") + nowtime = now() inst = Instance.objects.filter(hostname=settings.CLUSTER_HOST_ID) if inst.exists(): inst = inst[0] inst.capacity = get_system_task_capacity() + inst.version = tower_application_version inst.save() - return - raise RuntimeError("Cluster Host Not Found: {}".format(settings.CLUSTER_HOST_ID)) + else: + raise RuntimeError("Cluster Host Not Found: {}".format(settings.CLUSTER_HOST_ID)) + recent_inst = Instance.objects.filter(modified__gt=nowtime - timedelta(seconds=70)).exclude(hostname=settings.CLUSTER_HOST_ID) + # IFF any node has a greater version than we do, then we'll shutdown services + for other_inst in recent_inst: + if other_inst.version == "": + continue + if Version(other_inst.version) > Version(tower_application_version): + logger.error("Host {} reports Tower version {}, but this node {} is at {}, shutting down".format(other_inst.hostname, + other_inst.version, + inst.hostname, + inst.version)) + stop_local_services(['uwsgi', 'celery', 'beat', 'callback', 'fact']) + @task(bind=True, queue='default') @@ -1365,7 +1382,45 @@ class RunProjectUpdate(BaseTask): logger.error('Encountered error updating project dependent inventory: {}'.format(e)) continue + def release_lock(self, instance): + try: + fcntl.flock(self.lock_fd, fcntl.LOCK_UN) + except IOError as e: + logger.error("I/O error({0}) while trying to open lock file [{1}]: {2}".format(e.errno, instance.get_lock_file(), e.strerror)) + os.close(self.lock_fd) + raise + + os.close(self.lock_fd) + self.lock_fd = None + + ''' + Note: We don't support blocking=False + ''' + def acquire_lock(self, instance, blocking=True): + lock_path = instance.get_lock_file() + if lock_path is None: + raise RuntimeError(u'Invalid lock file path') + + try: + self.lock_fd = os.open(lock_path, os.O_RDONLY | os.O_CREAT) + except OSError as e: + logger.error("I/O error({0}) while trying to open lock file [{1}]: {2}".format(e.errno, lock_path, e.strerror)) + raise + + try: + fcntl.flock(self.lock_fd, fcntl.LOCK_EX) + except IOError as e: + os.close(self.lock_fd) + logger.error("I/O error({0}) while trying to aquire lock on file [{1}]: {2}".format(e.errno, lock_path, e.strerror)) + raise + + def pre_run_hook(self, instance, **kwargs): + if instance.launch_type == 'sync': + self.acquire_lock(instance) + def post_run_hook(self, instance, status, **kwargs): + if instance.launch_type == 'sync': + self.release_lock(instance) p = instance.project dependent_inventory_sources = p.scm_inventory_sources.all() if instance.job_type == 'check' and status not in ('failed', 'canceled',): diff --git a/awx/main/tests/factories/tower.py b/awx/main/tests/factories/tower.py index 0536afc693..18c24d0ca0 100644 --- a/awx/main/tests/factories/tower.py +++ b/awx/main/tests/factories/tower.py @@ -135,13 +135,15 @@ def create_survey_spec(variables=None, default_type='integer', required=True): argument specifying variable name(s) ''' if isinstance(variables, list): - name = "%s survey" % variables[0] - description = "A survey that starts with %s." % variables[0] vars_list = variables else: - name = "%s survey" % variables - description = "A survey about %s." % variables vars_list = [variables] + if isinstance(variables[0], basestring): + slogan = variables[0] + else: + slogan = variables[0].get('question_name', 'something') + name = "%s survey" % slogan + description = "A survey that asks about %s." % slogan spec = [] index = 0 diff --git a/awx/main/tests/functional/test_jobs.py b/awx/main/tests/functional/test_jobs.py index 5169d98fb1..ed50c22faa 100644 --- a/awx/main/tests/functional/test_jobs.py +++ b/awx/main/tests/functional/test_jobs.py @@ -2,6 +2,8 @@ from awx.main.models import Job, Instance from django.test.utils import override_settings import pytest +import json + @pytest.mark.django_db def test_orphan_unified_job_creation(instance, inventory): @@ -22,3 +24,15 @@ def test_job_capacity_and_with_inactive_node(): assert Instance.objects.total_capacity() == 100 with override_settings(AWX_ACTIVE_NODE_TIME=0): assert Instance.objects.total_capacity() < 100 + + +@pytest.mark.django_db +def test_job_notification_data(inventory): + encrypted_str = "$encrypted$" + job = Job.objects.create( + job_template=None, inventory=inventory, name='hi world', + extra_vars=json.dumps({"SSN": "123-45-6789"}), + survey_passwords={"SSN": encrypted_str} + ) + notification_data = job.notification_data(block=0) + assert json.loads(notification_data['extra_vars'])['SSN'] == encrypted_str diff --git a/awx/main/tests/unit/models/test_survey_models.py b/awx/main/tests/unit/models/test_survey_models.py index eefc5d97ab..502ee5c5d9 100644 --- a/awx/main/tests/unit/models/test_survey_models.py +++ b/awx/main/tests/unit/models/test_survey_models.py @@ -91,6 +91,40 @@ def test_update_kwargs_survey_invalid_default(survey_spec_factory): assert json.loads(defaulted_extra_vars['extra_vars'])['var2'] == 2 +@pytest.mark.parametrize("question_type,default,expect_use,expect_value", [ + ("multiplechoice", "", False, 'N/A'), # historical bug + ("multiplechoice", "zeb", False, 'N/A'), # zeb not in choices + ("multiplechoice", "coffee", True, 'coffee'), + ("multiselect", None, False, 'N/A'), # NOTE: Behavior is arguable, value of [] may be prefered + ("multiselect", "", False, 'N/A'), + ("multiselect", ["zeb"], False, 'N/A'), + ("multiselect", ["milk"], True, ["milk"]), + ("multiselect", ["orange\nmilk"], False, 'N/A'), # historical bug +]) +def test_optional_survey_question_defaults( + survey_spec_factory, question_type, default, expect_use, expect_value): + spec = survey_spec_factory([ + { + "required": False, + "default": default, + "choices": "orange\nmilk\nchocolate\ncoffee", + "variable": "c", + "type": question_type + }, + ]) + jt = JobTemplate(name="test-jt", survey_spec=spec, survey_enabled=True) + defaulted_extra_vars = jt._update_unified_job_kwargs() + element = spec['spec'][0] + if expect_use: + assert jt._survey_element_validation(element, {element['variable']: element['default']}) == [] + else: + assert jt._survey_element_validation(element, {element['variable']: element['default']}) + if expect_use: + assert json.loads(defaulted_extra_vars['extra_vars'])['c'] == expect_value + else: + assert 'c' not in defaulted_extra_vars['extra_vars'] + + class TestWorkflowSurveys: def test_update_kwargs_survey_defaults(self, survey_spec_factory): "Assure that the survey default over-rides a JT variable" diff --git a/awx/main/tests/unit/test_tasks.py b/awx/main/tests/unit/test_tasks.py index 629d1e88b9..597b7aaa38 100644 --- a/awx/main/tests/unit/test_tasks.py +++ b/awx/main/tests/unit/test_tasks.py @@ -5,9 +5,11 @@ import ConfigParser import json import tempfile +import os +import fcntl import pytest -import yaml import mock +import yaml from awx.main.models import ( Credential, @@ -1067,3 +1069,62 @@ class TestInventoryUpdateCredentials(TestJobExecution): self.task.run_pexpect = mock.Mock(side_effect=run_pexpect_side_effect) self.task.run(self.pk) + + +def test_os_open_oserror(): + with pytest.raises(OSError): + os.open('this_file_does_not_exist', os.O_RDONLY) + + +def test_fcntl_ioerror(): + with pytest.raises(IOError): + fcntl.flock(99999, fcntl.LOCK_EX) + + +@mock.patch('os.open') +@mock.patch('logging.getLogger') +def test_aquire_lock_open_fail_logged(logging_getLogger, os_open): + err = OSError() + err.errno = 3 + err.strerror = 'dummy message' + + instance = mock.Mock() + instance.get_lock_file.return_value = 'this_file_does_not_exist' + + os_open.side_effect = err + + logger = mock.Mock() + logging_getLogger.return_value = logger + + ProjectUpdate = tasks.RunProjectUpdate() + + with pytest.raises(OSError, errno=3, strerror='dummy message'): + ProjectUpdate.acquire_lock(instance) + assert logger.err.called_with("I/O error({0}) while trying to open lock file [{1}]: {2}".format(3, 'this_file_does_not_exist', 'dummy message')) + + +@mock.patch('os.open') +@mock.patch('os.close') +@mock.patch('logging.getLogger') +@mock.patch('fcntl.flock') +def test_aquire_lock_acquisition_fail_logged(fcntl_flock, logging_getLogger, os_close, os_open): + err = IOError() + err.errno = 3 + err.strerror = 'dummy message' + + instance = mock.Mock() + instance.get_lock_file.return_value = 'this_file_does_not_exist' + + os_open.return_value = 3 + + logger = mock.Mock() + logging_getLogger.return_value = logger + + fcntl_flock.side_effect = err + + ProjectUpdate = tasks.RunProjectUpdate() + + with pytest.raises(IOError, errno=3, strerror='dummy message'): + ProjectUpdate.acquire_lock(instance) + os_close.assert_called_with(3) + assert logger.err.called_with("I/O error({0}) while trying to aquire lock on file [{1}]: {2}".format(3, 'this_file_does_not_exist', 'dummy message')) diff --git a/awx/main/tests/unit/test_views.py b/awx/main/tests/unit/test_views.py new file mode 100644 index 0000000000..2204635eb6 --- /dev/null +++ b/awx/main/tests/unit/test_views.py @@ -0,0 +1,37 @@ +import pytest +import mock + +# Django REST Framework +from rest_framework import exceptions + +# AWX +from awx.main.views import ApiErrorView + + +HTTP_METHOD_NAMES = [ + 'get', + 'post', + 'put', + 'patch', + 'delete', + 'head', + 'options', + 'trace', +] + + +@pytest.fixture +def api_view_obj_fixture(): + return ApiErrorView() + + +@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES) +def test_exception_view_allow_http_methods(method_name): + assert hasattr(ApiErrorView, method_name) + + +@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES) +def test_exception_view_raises_exception(api_view_obj_fixture, method_name): + request_mock = mock.MagicMock() + with pytest.raises(exceptions.APIException): + getattr(api_view_obj_fixture, method_name)(request_mock) diff --git a/awx/main/tests/unit/utils/common/test_common.py b/awx/main/tests/unit/utils/common/test_common.py index 6542d64cf0..95ba3b8b9f 100644 --- a/awx/main/tests/unit/utils/common/test_common.py +++ b/awx/main/tests/unit/utils/common/test_common.py @@ -2,6 +2,7 @@ # Copyright (c) 2017 Ansible, Inc. # All Rights Reserved. +import pytest from awx.conf.models import Setting from awx.main.utils import common @@ -52,3 +53,13 @@ def test_encrypt_field_with_ask(): def test_encrypt_field_with_empty_value(): encrypted = common.encrypt_field(Setting(value=None), 'value') assert encrypted is None + + +@pytest.mark.parametrize('input_, output', [ + ({"foo": "bar"}, {"foo": "bar"}), + ('{"foo": "bar"}', {"foo": "bar"}), + ('---\nfoo: bar', {"foo": "bar"}), + (4399, {}), +]) +def test_parse_yaml_or_json(input_, output): + assert common.parse_yaml_or_json(input_) == output diff --git a/awx/main/tests/unit/utils/test_reload.py b/awx/main/tests/unit/utils/test_reload.py index d1f3291753..26f2d42ece 100644 --- a/awx/main/tests/unit/utils/test_reload.py +++ b/awx/main/tests/unit/utils/test_reload.py @@ -3,10 +3,15 @@ from awx.main.utils import reload def test_produce_supervisor_command(mocker): - with mocker.patch.object(reload.subprocess, 'Popen'): - reload._supervisor_service_restart(['beat', 'callback', 'fact']) + communicate_mock = mocker.MagicMock(return_value=('Everything is fine', '')) + mock_process = mocker.MagicMock() + mock_process.communicate = communicate_mock + Popen_mock = mocker.MagicMock(return_value=mock_process) + with mocker.patch.object(reload.subprocess, 'Popen', Popen_mock): + reload._supervisor_service_command(['beat', 'callback', 'fact'], "restart") reload.subprocess.Popen.assert_called_once_with( - ['supervisorctl', 'restart', 'tower-processes:receiver', 'tower-processes:factcacher']) + ['supervisorctl', 'restart', 'tower-processes:receiver', 'tower-processes:factcacher'], + stderr=-1, stdin=-1, stdout=-1) def test_routing_of_service_restarts_works(mocker): @@ -14,13 +19,13 @@ def test_routing_of_service_restarts_works(mocker): This tests that the parent restart method will call the appropriate service restart methods, depending on which services are given in args ''' - with mocker.patch.object(reload, '_uwsgi_reload'),\ + with mocker.patch.object(reload, '_uwsgi_fifo_command'),\ mocker.patch.object(reload, '_reset_celery_thread_pool'),\ - mocker.patch.object(reload, '_supervisor_service_restart'): + mocker.patch.object(reload, '_supervisor_service_command'): reload.restart_local_services(['uwsgi', 'celery', 'flower', 'daphne']) - reload._uwsgi_reload.assert_called_once_with() + reload._uwsgi_fifo_command.assert_called_once_with(uwsgi_command="c") reload._reset_celery_thread_pool.assert_called_once_with() - reload._supervisor_service_restart.assert_called_once_with(['flower', 'daphne']) + reload._supervisor_service_command.assert_called_once_with(['flower', 'daphne'], command="restart") @@ -28,11 +33,11 @@ def test_routing_of_service_restarts_diables(mocker): ''' Test that methods are not called if not in the args ''' - with mocker.patch.object(reload, '_uwsgi_reload'),\ + with mocker.patch.object(reload, '_uwsgi_fifo_command'),\ mocker.patch.object(reload, '_reset_celery_thread_pool'),\ - mocker.patch.object(reload, '_supervisor_service_restart'): + mocker.patch.object(reload, '_supervisor_service_command'): reload.restart_local_services(['flower']) - reload._uwsgi_reload.assert_not_called() + reload._uwsgi_fifo_command.assert_not_called() reload._reset_celery_thread_pool.assert_not_called() - reload._supervisor_service_restart.assert_called_once_with(['flower']) + reload._supervisor_service_command.assert_called_once_with(['flower'], command="restart") diff --git a/awx/main/utils/common.py b/awx/main/utils/common.py index 053e1e76cb..b223fde0c6 100644 --- a/awx/main/utils/common.py +++ b/awx/main/utils/common.py @@ -854,8 +854,8 @@ class OutputEventFilter(object): def callback_filter_out_ansible_extra_vars(extra_vars): extra_vars_redacted = {} + extra_vars = parse_yaml_or_json(extra_vars) for key, value in extra_vars.iteritems(): if not key.startswith('ansible_'): extra_vars_redacted[key] = value return extra_vars_redacted - diff --git a/awx/main/utils/handlers.py b/awx/main/utils/handlers.py index 2cddfea095..9d8a3572ea 100644 --- a/awx/main/utils/handlers.py +++ b/awx/main/utils/handlers.py @@ -44,6 +44,7 @@ PARAM_NAMES = { 'indv_facts': 'LOG_AGGREGATOR_INDIVIDUAL_FACTS', 'enabled_flag': 'LOG_AGGREGATOR_ENABLED', 'tcp_timeout': 'LOG_AGGREGATOR_TCP_TIMEOUT', + 'verify_cert': 'LOG_AGGREGATOR_VERIFY_CERT' } @@ -242,8 +243,11 @@ class BaseHTTPSHandler(BaseHandler): payload_str = json.dumps(payload_input) else: payload_str = payload_input - return dict(data=payload_str, background_callback=unused_callback, - timeout=self.tcp_timeout) + kwargs = dict(data=payload_str, background_callback=unused_callback, + timeout=self.tcp_timeout) + if self.verify_cert is False: + kwargs['verify'] = False + return kwargs def _send(self, payload): diff --git a/awx/main/utils/reload.py b/awx/main/utils/reload.py index 729a33a703..25a4d17a57 100644 --- a/awx/main/utils/reload.py +++ b/awx/main/utils/reload.py @@ -14,12 +14,12 @@ from celery import current_app logger = logging.getLogger('awx.main.utils.reload') -def _uwsgi_reload(): +def _uwsgi_fifo_command(uwsgi_command): # http://uwsgi-docs.readthedocs.io/en/latest/MasterFIFO.html#available-commands logger.warn('Initiating uWSGI chain reload of server') - TRIGGER_CHAIN_RELOAD = 'c' + TRIGGER_COMMAND = uwsgi_command with open(settings.UWSGI_FIFO_LOCATION, 'w') as awxfifo: - awxfifo.write(TRIGGER_CHAIN_RELOAD) + awxfifo.write(TRIGGER_COMMAND) def _reset_celery_thread_pool(): @@ -29,7 +29,7 @@ def _reset_celery_thread_pool(): destination=['celery@{}'.format(settings.CLUSTER_HOST_ID)], reply=False) -def _supervisor_service_restart(service_internal_names): +def _supervisor_service_command(service_internal_names, command): ''' Service internal name options: - beat - celery - callback - channels - uwsgi - daphne @@ -46,23 +46,35 @@ def _supervisor_service_restart(service_internal_names): for n in service_internal_names: if n in name_translation_dict: programs.append('{}:{}'.format(group_name, name_translation_dict[n])) - args.extend(['restart']) + args.extend([command]) args.extend(programs) logger.debug('Issuing command to restart services, args={}'.format(args)) - subprocess.Popen(args) + supervisor_process = subprocess.Popen(args, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + restart_stdout, restart_err = supervisor_process.communicate() + restart_code = supervisor_process.returncode + if restart_code or restart_err: + logger.error('supervisorctl restart errored with exit code `{}`, stdout:\n{}stderr:\n{}'.format( + restart_code, restart_stdout.strip(), restart_err.strip())) + else: + logger.info('supervisorctl restart finished, stdout:\n{}'.format(restart_stdout.strip())) def restart_local_services(service_internal_names): logger.warn('Restarting services {} on this node in response to user action'.format(service_internal_names)) if 'uwsgi' in service_internal_names: - _uwsgi_reload() + _uwsgi_fifo_command(uwsgi_command='c') service_internal_names.remove('uwsgi') restart_celery = False if 'celery' in service_internal_names: restart_celery = True service_internal_names.remove('celery') - _supervisor_service_restart(service_internal_names) + _supervisor_service_command(service_internal_names, command='restart') if restart_celery: # Celery restarted last because this probably includes current process _reset_celery_thread_pool() + +def stop_local_services(service_internal_names): + logger.warn('Stopping services {} on this node in response to user action'.format(service_internal_names)) + _supervisor_service_command(service_internal_names, command='stop') diff --git a/awx/main/views.py b/awx/main/views.py index f476f81cfd..c8bcfa304f 100644 --- a/awx/main/views.py +++ b/awx/main/views.py @@ -10,20 +10,32 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import exceptions, permissions, views +def _force_raising_exception(view_obj, request, format=None): + raise view_obj.exception_class() + + class ApiErrorView(views.APIView): authentication_classes = [] permission_classes = (permissions.AllowAny,) metadata_class = None - allowed_methods = ('GET', 'HEAD') exception_class = exceptions.APIException view_name = _('API Error') def get_view_name(self): return self.view_name - def get(self, request, format=None): - raise self.exception_class() + def finalize_response(self, request, response, *args, **kwargs): + response = super(ApiErrorView, self).finalize_response(request, response, *args, **kwargs) + try: + del response['Allow'] + except Exception: + pass + return response + + +for method_name in ApiErrorView.http_method_names: + setattr(ApiErrorView, method_name, _force_raising_exception) def handle_error(request, status=404, **kwargs): diff --git a/awx/playbooks/project_update.yml b/awx/playbooks/project_update.yml index bfabd47a98..03b3734a02 100644 --- a/awx/playbooks/project_update.yml +++ b/awx/playbooks/project_update.yml @@ -128,8 +128,8 @@ url_password: "{{scm_password}}" force_basic_auth: yes force: yes - when: scm_type == 'insights' and item.name != None - with_items: "{{insights_output.json}}" + when: scm_type == 'insights' and item.name != None and item.name != "" + with_items: "{{ insights_output.json|default([]) }}" failed_when: false - name: Fetch Insights Playbook @@ -140,8 +140,8 @@ url_password: "{{scm_password}}" force_basic_auth: yes force: yes - when: scm_type == 'insights' and item.name == None - with_items: "{{insights_output.json}}" + when: scm_type == 'insights' and (item.name == None or item.name == "") + with_items: "{{ insights_output.json|default([]) }}" failed_when: false - name: detect requirements.yml diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 10974033e7..856c883aba 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -876,8 +876,10 @@ INSIGHTS_URL_BASE = "https://access.redhat.com" TOWER_SETTINGS_MANIFEST = {} +# Settings related to external logger configuration LOG_AGGREGATOR_ENABLED = False LOG_AGGREGATOR_TCP_TIMEOUT = 5 +LOG_AGGREGATOR_VERIFY_CERT = True # The number of retry attempts for websocket session establishment # If you're encountering issues establishing websockets in clustered Tower, diff --git a/awx/sso/backends.py b/awx/sso/backends.py index 0e10ffbf75..aef33911cf 100644 --- a/awx/sso/backends.py +++ b/awx/sso/backends.py @@ -12,7 +12,6 @@ from django.dispatch import receiver from django.contrib.auth.models import User from django.conf import settings as django_settings from django.core.signals import setting_changed -from django.core.exceptions import ImproperlyConfigured # django-auth-ldap from django_auth_ldap.backend import LDAPSettings as BaseLDAPSettings @@ -93,8 +92,8 @@ class LDAPBackend(BaseLDAPBackend): return None try: return super(LDAPBackend, self).authenticate(username, password) - except ImproperlyConfigured: - logger.error("Unable to authenticate, LDAP is improperly configured") + except Exception: + logger.exception("Encountered an error authenticating to LDAP") return None def get_user(self, user_id): diff --git a/awx/ui/client/legacy-styles/forms.less b/awx/ui/client/legacy-styles/forms.less index 7af8a7c322..3e5f7f79bf 100644 --- a/awx/ui/client/legacy-styles/forms.less +++ b/awx/ui/client/legacy-styles/forms.less @@ -353,7 +353,6 @@ .select2-results__option{ color: @field-label !important; - height: 30px!important; } .select2-container--default .select2-results__option--highlighted[aria-selected]{ @@ -692,3 +691,15 @@ input[type='radio']:checked:before { .alert-info--noTextTransform { text-transform: none; } + +.select2-results__option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.select2-results__option:hover { + overflow-wrap: break-word; + white-space: normal; +} + diff --git a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html index 2bd31c170d..a18393dd08 100644 --- a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html +++ b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.partial.html @@ -41,6 +41,7 @@
Workflow Templates
@@ -72,7 +73,7 @@
-
+
diff --git a/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js index 0943d21b27..3ae57a011d 100644 --- a/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js +++ b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-ldap.form.js @@ -26,8 +26,18 @@ export default ['i18n', function(i18n) { }, AUTH_LDAP_USER_SEARCH: { type: 'textarea', + rows: 6, + codeMirror: true, + class: 'Form-textAreaLabel Form-formGroup--fullWidth', reset: 'AUTH_LDAP_USER_SEARCH' }, + AUTH_LDAP_GROUP_SEARCH: { + type: 'textarea', + rows: 6, + codeMirror: true, + class: 'Form-textAreaLabel Form-formGroup--fullWidth', + reset: 'AUTH_LDAP_GROUP_SEARCH' + }, AUTH_LDAP_USER_DN_TEMPLATE: { type: 'text', reset: 'AUTH_LDAP_USER_DN_TEMPLATE' @@ -39,10 +49,6 @@ export default ['i18n', function(i18n) { codeMirror: true, class: 'Form-textAreaLabel Form-formGroup--fullWidth', }, - AUTH_LDAP_GROUP_SEARCH: { - type: 'textarea', - reset: 'AUTH_LDAP_GROUP_SEARCH' - }, AUTH_LDAP_GROUP_TYPE: { type: 'select', reset: 'AUTH_LDAP_GROUP_TYPE', diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index dab604b744..16f40901db 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -75,7 +75,10 @@ export default [ if(key === "AD_HOC_COMMANDS"){ $scope[key] = data[key].toString(); } - else{ + else if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ + $scope[key] = JSON.stringify(data[key]); + } + else { $scope[key] = ConfigurationUtils.arrayToList(data[key], key); } @@ -353,27 +356,38 @@ export default [ clearApiErrors(); _.each(keys, function(key) { if($scope.configDataResolve[key].type === 'choice' || multiselectDropdowns.indexOf(key) !== -1) { + + // Handle AD_HOC_COMMANDS + if(multiselectDropdowns.indexOf(key) !== -1) { + let newModules = $("#configuration_jobs_template_AD_HOC_COMMANDS > option") + .filter("[data-select2-tag=true]") + .map((i, val) => ({value: $(val).text()})); + newModules.each(function(i, val) { + $scope[key].push(val); + }); + + payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); + } + //Parse dropdowns and dropdowns labeled as lists - if($scope[key] === null) { + else if($scope[key] === null) { payload[key] = null; } else if($scope[key][0] && $scope[key][0].value !== undefined) { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Handle AD_HOC_COMMANDS - payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); - } else { - payload[key] = _.map($scope[key], 'value').join(','); - } + payload[key] = _.map($scope[key], 'value').join(','); } else { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Default AD_HOC_COMMANDS to an empty list - payload[key] = $scope[key].value || []; - } else { - payload[key] = $scope[key].value; - } + payload[key] = $scope[key].value; } } else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) { - // Parse lists - payload[key] = ConfigurationUtils.listToArray($scope[key], key); + + if(key === "AUTH_LDAP_USER_SEARCH" || key === "AUTH_LDAP_GROUP_SEARCH"){ + payload[key] = $scope[key] === "{}" ? [] : ToJSON($scope.parseType, + $scope[key]); + } + else { + // Parse lists + payload[key] = ConfigurationUtils.listToArray($scope[key], key); + } + } else if($scope.configDataResolve[key].type === 'nested object') { if($scope[key] === '') { diff --git a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js index 2aca32628b..ca14b35225 100644 --- a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js +++ b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js @@ -79,7 +79,18 @@ export default [ function populateAdhocCommand(flag){ $scope.$parent.AD_HOC_COMMANDS = $scope.$parent.AD_HOC_COMMANDS.toString(); var ad_hoc_commands = $scope.$parent.AD_HOC_COMMANDS.split(','); - $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, (item) => _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item })); + $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, function(item){ + let option = _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item }); + if(!option){ + option = { + name: item, + value: item, + label: item + }; + $scope.$parent.AD_HOC_COMMANDS_options.push(option); + } + return option; + }); if(flag !== undefined){ dropdownRendered = flag; @@ -90,6 +101,7 @@ export default [ CreateSelect2({ element: '#configuration_jobs_template_AD_HOC_COMMANDS', multiple: true, + addNew: true, placeholder: i18n._('Select commands') }); } diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js index 2ebf91cc93..093e6902f1 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-groups.controller.js @@ -11,11 +11,9 @@ $scope.item = group; $scope.submitMode = $stateParams.groups === undefined ? 'move' : 'copy'; - $scope.toggle_row = function(id){ - // toggle off anything else currently selected - _.forEach($scope.groups, (item) => {return item.id === id ? item.checked = 1 : item.checked = null;}); - // yoink the currently selected thing - $scope.selected = _.find($scope.groups, (item) => {return item.id === id;}); + + $scope.updateSelected = function(selectedGroup) { + $scope.selected = angular.copy(selectedGroup); }; $scope.formCancel = function(){ $state.go('^'); diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js index 8e347dc2c8..51cfb194da 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-hosts.controller.js @@ -11,11 +11,9 @@ $scope.item = host; $scope.submitMode = 'copy'; - $scope.toggle_row = function(id){ - // toggle off anything else currently selected - _.forEach($scope.groups, (item) => {return item.id === id ? item.checked = 1 : item.checked = null;}); - // yoink the currently selected thing - $scope.selected = _.find($scope.groups, (item) => {return item.id === id;}); + + $scope.updateSelected = function(selectedGroup) { + $scope.selected = angular.copy(selectedGroup); }; $scope.formCancel = function(){ $state.go('^'); diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js new file mode 100644 index 0000000000..e672eae640 --- /dev/null +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move-list.controller.js @@ -0,0 +1,44 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + + export default + ['$scope', 'CopyMoveGroupList', 'Dataset', + function($scope, list, Dataset){ + init(); + + function init() { + $scope.list = list; + $scope[`${list.iterator}_dataset`] = Dataset.data; + $scope[list.name] = $scope[`${list.iterator}_dataset`].results; + + $scope.$watch('groups', function(){ + if($scope.selectedGroup){ + $scope.groups.forEach(function(row, i) { + if(row.id === $scope.selectedGroup.id) { + $scope.groups[i].checked = 1; + } + else { + $scope.groups[i].checked = 0; + } + }); + } + }); + } + + $scope.toggle_row = function(id) { + // toggle off anything else currently selected + _.forEach($scope.groups, (item) => { + if(item.id === id) { + item.checked = 1; + $scope.selectedGroup = item; + $scope.updateSelected(item); + } + else { + item.checked = null; + } + }); + }; + }]; diff --git a/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js b/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js index deff0cf0ef..82fd77fee2 100644 --- a/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js +++ b/awx/ui/client/src/inventories/manage/copy-move/copy-move.route.js @@ -8,6 +8,7 @@ import { N_ } from '../../../i18n'; import CopyMoveGroupsController from './copy-move-groups.controller'; import CopyMoveHostsController from './copy-move-hosts.controller'; +import CopyMoveListController from './copy-move-list.controller'; var copyMoveGroupRoute = { name: 'inventoryManage.copyMoveGroup', @@ -53,7 +54,8 @@ var copyMoveGroupRoute = { input_type: 'radio' }); return html; - } + }, + controller: CopyMoveListController } } }; @@ -90,7 +92,8 @@ var copyMoveHostRoute = { input_type: 'radio' }); return html; - } + }, + controller: CopyMoveListController } } }; diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index 14d804ab23..f3a1964501 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -258,11 +258,7 @@ export default ['$log', 'moment', function($log, moment){ .split("\r\n"); if (lineNums.length > lines.length) { - let padBy = lineNums.length - lines.length; - - for (let i = 0; i <= padBy; i++) { - lines.push(""); - } + lineNums = lineNums.slice(0, lines.length); } lines = this.distributeColors(lines); @@ -293,7 +289,7 @@ export default ['$log', 'moment', function($log, moment){ return `
${this.getCollapseIcon(event, lineArr[1])}${lineArr[0]}
-
${this.prettify(lineArr[1])}${this.getStartTimeBadge(event, lineArr[1])}
`; }); diff --git a/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js new file mode 100644 index 0000000000..6ac96eff0e --- /dev/null +++ b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-max.directive.js @@ -0,0 +1,29 @@ +/************************************************* + * Copyright (c) 2017 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +/* jshint unused: vars */ + +export default + [ 'Empty', + function(Empty) { + return { + restrict: 'A', + require: 'ngModel', + link: function(scope, elem, attr, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + var max = (attr.awPasswordMax) ? scope.$eval(attr.awPasswordMax) : Infinity; + if (!Empty(max) && !Empty(viewValue) && viewValue.length > max && viewValue !== '$encrypted$') { + ctrl.$setValidity('awPasswordMax', false); + return viewValue; + } else { + ctrl.$setValidity('awPasswordMax', true); + return viewValue; + } + }); + } + }; + } + ]; diff --git a/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js new file mode 100644 index 0000000000..1498313177 --- /dev/null +++ b/awx/ui/client/src/job-submission/job-submission-directives/aw-password-min.directive.js @@ -0,0 +1,27 @@ +/************************************************* + * Copyright (c) 2017 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + + export default + [ 'Empty', + function(Empty) { + return { + restrict: 'A', + require: 'ngModel', + link: function(scope, elem, attr, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + var min = (attr.awPasswordMin) ? scope.$eval(attr.awPasswordMin) : -Infinity; + if (!Empty(min) && !Empty(viewValue) && viewValue.length < min && viewValue !== '$encrypted$') { + ctrl.$setValidity('awPasswordMin', false); + return viewValue; + } else { + ctrl.$setValidity('awPasswordMin', true); + return viewValue; + } + }); + } + }; + } + ]; diff --git a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js index 28aa13d6db..4b633d3eaa 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js @@ -42,6 +42,13 @@ export default else if(question.type === "multiplechoice") { question.model = question.default ? angular.copy(question.default) : ""; question.choices = question.choices.split(/\n/); + + // Add a default empty string option to the choices array. If this choice is + // selected then the extra var will not be sent when we POST to the launch + // endpoint + if(!question.required) { + question.choices.unshift(''); + } } else if(question.type === "float"){ question.model = (!Empty(question.default)) ? angular.copy(question.default) : (!Empty(question.default_float)) ? angular.copy(question.default_float) : ""; diff --git a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js index 8269cac26b..88e90f6007 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js @@ -90,9 +90,9 @@ export default // for optional select lists, if they are left blank make sure we submit // a value that the API will consider "empty" // - case "multiplechoice": - job_launch_data.extra_vars[fld] = ""; - break; + // ISSUE: I don't think this logic ever actually fires + // When I tested this, we don't pass this extra var back + // through the api when the mutliselect is optional and empty case "multiselect": job_launch_data.extra_vars[fld] = []; break; diff --git a/awx/ui/client/src/job-submission/job-submission.partial.html b/awx/ui/client/src/job-submission/job-submission.partial.html index f05bdd25a8..3f473a71d7 100644 --- a/awx/ui/client/src/job-submission/job-submission.partial.html +++ b/awx/ui/client/src/job-submission/job-submission.partial.html @@ -186,10 +186,11 @@ - + +
Please enter an answer.
-
Please enter an answer between {{question.minlength}} to {{question.maxlength}} characters long.
+
Please enter an answer between {{question.minlength}} to {{question.maxlength}} characters long.
diff --git a/awx/ui/client/src/job-submission/main.js b/awx/ui/client/src/job-submission/main.js index 1204613560..f0a38c6874 100644 --- a/awx/ui/client/src/job-submission/main.js +++ b/awx/ui/client/src/job-submission/main.js @@ -16,6 +16,8 @@ import PromptForPasswords from './job-submission-factories/prompt-for-passwords. import submitJob from './job-submission.directive'; import credentialList from './lists/credential/job-sub-cred-list.directive'; import inventoryList from './lists/inventory/job-sub-inv-list.directive'; +import awPasswordMin from './job-submission-directives/aw-password-min.directive'; +import awPasswordMax from './job-submission-directives/aw-password-max.directive'; export default angular.module('jobSubmission', []) @@ -30,4 +32,6 @@ export default .factory('PromptForPasswords', PromptForPasswords) .directive('submitJob', submitJob) .directive('jobSubCredList', credentialList) - .directive('jobSubInvList', inventoryList); + .directive('jobSubInvList', inventoryList) + .directive('awPasswordMin', awPasswordMin) + .directive('awPasswordMax', awPasswordMax); diff --git a/awx/ui/client/src/shared/directives.js b/awx/ui/client/src/shared/directives.js index a602255fac..dc7c9a4011 100644 --- a/awx/ui/client/src/shared/directives.js +++ b/awx/ui/client/src/shared/directives.js @@ -1387,7 +1387,7 @@ function(ConfigurationUtils, i18n, $rootScope) { } } else { - return false; + return (!value || value === "") ? false : true; } }; } diff --git a/awx/ui/client/src/shared/smart-search/queryset.service.js b/awx/ui/client/src/shared/smart-search/queryset.service.js index 9484d10cef..c2800f0bf2 100644 --- a/awx/ui/client/src/shared/smart-search/queryset.service.js +++ b/awx/ui/client/src/shared/smart-search/queryset.service.js @@ -254,6 +254,10 @@ export default ['$q', 'Rest', 'ProcessErrors', '$rootScope', 'Wait', 'DjangoSear .catch(function(response) { Wait('stop'); + if (/^\/api\/v[0-9]+\/workflow_job_templates\/$/.test(endpoint) && response.status === 402) { + return response; + } + this.error(response.data, response.status); throw response; diff --git a/awx/ui/po/ansible-tower-ui.pot b/awx/ui/po/ansible-tower-ui.pot index 4c87ddb4d1..f90e2b7080 100644 --- a/awx/ui/po/ansible-tower-ui.pot +++ b/awx/ui/po/ansible-tower-ui.pot @@ -4,28 +4,44 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "%s or %s" msgstr "" -#: client/src/controllers/Projects.js:439 -#: client/src/controllers/Projects.js:721 +#: client/src/controllers/Projects.js:441 +#: client/src/controllers/Projects.js:740 msgid "%sNote:%s 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." msgstr "" #: client/src/controllers/Projects.js:426 -#: client/src/controllers/Projects.js:708 +#: client/src/controllers/Projects.js:725 msgid "%sNote:%s When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, do not enter a username (other than git). Additionally, GitHub and Bitbucket do not support password authentication when using SSH. GIT read only protocol (git://) does not use username or password information." msgstr "" -#: client/src/forms/Credentials.js:288 +#: client/src/forms/Credentials.js:289 msgid "(defaults to %s)" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:15 +#: client/src/organizations/list/organizations-list.partial.html:20 msgid "+ ADD" msgstr "" +#: client/src/partials/subhome.html:30 +msgid " Back to options" +msgstr "" + +#: client/src/partials/subhome.html:32 +msgid " Save" +msgstr "" + +#: client/src/partials/subhome.html:29 +msgid " View Details" +msgstr "" + +#: client/src/partials/subhome.html:31 +msgid " Cancel" +msgstr "" + #: client/src/management-jobs/scheduler/schedulerForm.partial.html:33 msgid "A schedule name is required." msgstr "" @@ -46,16 +62,22 @@ msgstr "" msgid "ACTION" msgstr "" +#: client/src/forms/ActivityDetail.js:25 +msgid "ACTIVITY DETAIL" +msgstr "" + #: client/src/activity-stream/activitystream.route.js:27 +#: client/src/lists/Streams.js:16 +#: client/src/lists/Streams.js:17 msgid "ACTIVITY STREAM" msgstr "" -#: client/src/forms/Credentials.js:450 -#: client/src/forms/JobTemplates.js:430 +#: client/src/forms/Credentials.js:451 +#: client/src/forms/JobTemplates.js:434 #: client/src/forms/Organizations.js:75 -#: client/src/forms/Projects.js:238 -#: client/src/forms/Teams.js:86 -#: client/src/forms/Workflows.js:128 +#: client/src/forms/Projects.js:245 +#: client/src/forms/Teams.js:87 +#: client/src/forms/Workflows.js:129 #: client/src/inventory-scripts/inventory-scripts.list.js:45 #: client/src/lists/Credentials.js:60 #: client/src/lists/Inventories.js:68 @@ -65,6 +87,7 @@ msgstr "" #: client/src/lists/Templates.js:62 #: client/src/lists/Users.js:52 #: client/src/notifications/notificationTemplates.list.js:52 +#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 msgid "ADD" msgstr "" @@ -72,16 +95,16 @@ msgstr "" msgid "ADD NOTIFICATION TEMPLATE" msgstr "" -#: client/src/forms/Teams.js:158 +#: client/src/forms/Teams.js:159 #: client/src/forms/Users.js:215 msgid "ADD PERMISSIONS" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 msgid "ADDITIONAL INFORMATION:" msgstr "" -#: client/src/organizations/linkout/organizations-linkout.route.js:325 +#: client/src/organizations/linkout/organizations-linkout.route.js:328 msgid "ADMINS" msgstr "" @@ -89,11 +112,15 @@ msgstr "" msgid "ALL ACTIVITY" msgstr "" -#: client/src/forms/Credentials.js:199 +#: client/src/lists/AllJobs.js:16 +msgid "ALL JOBS" +msgstr "" + +#: client/src/forms/Credentials.js:200 msgid "API Key" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:251 +#: client/src/notifications/notificationTemplates.form.js:250 msgid "API Service/Integration Key" msgstr "" @@ -105,15 +132,15 @@ msgstr "" msgid "About Tower" msgstr "" -#: client/src/forms/Credentials.js:92 +#: client/src/forms/Credentials.js:93 msgid "Access Key" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:229 +#: client/src/notifications/notificationTemplates.form.js:228 msgid "Account SID" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:187 +#: client/src/notifications/notificationTemplates.form.js:186 msgid "Account Token" msgstr "" @@ -122,7 +149,7 @@ msgid "Action" msgstr "" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 -#: client/src/shared/list-generator/list-generator.factory.js:547 +#: client/src/shared/list-generator/list-generator.factory.js:543 msgid "Actions" msgstr "" @@ -131,21 +158,14 @@ msgstr "" msgid "Activity" msgstr "" -#: client/src/forms/ActivityDetail.js:25 -msgid "Activity Detail" -msgstr "" - #: client/src/configuration/system-form/configuration-system.controller.js:81 -#: client/src/lists/Streams.js:16 -#: client/src/lists/Streams.js:17 msgid "Activity Stream" msgstr "" -#: client/src/forms/Inventories.js:105 +#: client/src/forms/Inventories.js:106 #: client/src/forms/Organizations.js:72 -#: client/src/forms/Teams.js:83 -#: client/src/forms/Workflows.js:125 -#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 +#: client/src/forms/Teams.js:84 +#: client/src/forms/Workflows.js:126 msgid "Add" msgstr "" @@ -165,7 +185,7 @@ msgstr "" msgid "Add Notification" msgstr "" -#: client/src/shared/stateDefinitions.factory.js:277 +#: client/src/shared/stateDefinitions.factory.js:280 msgid "Add Permissions" msgstr "" @@ -173,9 +193,9 @@ msgstr "" msgid "Add Project" msgstr "" -#: client/src/forms/JobTemplates.js:475 -#: client/src/forms/Workflows.js:173 -#: client/src/shared/form-generator.js:1719 +#: client/src/forms/JobTemplates.js:479 +#: client/src/forms/Workflows.js:174 +#: client/src/shared/form-generator.js:1728 msgid "Add Survey" msgstr "" @@ -183,13 +203,13 @@ msgstr "" msgid "Add Team" msgstr "" -#: client/src/forms/Teams.js:84 +#: client/src/forms/Teams.js:85 msgid "Add User" msgstr "" #: client/src/lists/Users.js:19 -#: client/src/shared/stateDefinitions.factory.js:342 -#: client/src/shared/stateDefinitions.factory.js:511 +#: client/src/shared/stateDefinitions.factory.js:345 +#: client/src/shared/stateDefinitions.factory.js:518 msgid "Add Users" msgstr "" @@ -201,11 +221,11 @@ msgstr "" msgid "Add a new schedule" msgstr "" -#: client/src/forms/Credentials.js:448 -#: client/src/forms/Inventories.js:107 -#: client/src/forms/JobTemplates.js:428 -#: client/src/forms/Projects.js:236 -#: client/src/forms/Workflows.js:126 +#: client/src/forms/Credentials.js:449 +#: client/src/forms/Inventories.js:108 +#: client/src/forms/JobTemplates.js:432 +#: client/src/forms/Projects.js:243 +#: client/src/forms/Workflows.js:127 msgid "Add a permission" msgstr "" @@ -213,7 +233,7 @@ msgstr "" msgid "Add passwords, SSH keys, etc. for Tower to use when launching jobs against machines, or when syncing inventories or projects." msgstr "" -#: client/src/shared/form-generator.js:1462 +#: client/src/shared/form-generator.js:1471 msgid "Admin" msgstr "" @@ -231,7 +251,6 @@ msgstr "" msgid "All Activity" msgstr "" -#: client/src/lists/AllJobs.js:16 #: client/src/portal-mode/portal-mode-jobs.partial.html:7 #: client/src/portal-mode/portal-mode-layout.partial.html:12 msgid "All Jobs" @@ -250,19 +269,19 @@ msgstr "" msgid "Always" msgstr "" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "An SCM update does not appear to be running for project: %s. Click the %sRefresh%s button to view the latest status." msgstr "" -#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:102 msgid "Are you sure you want to delete the credential below?" msgstr "" -#: client/src/helpers/Jobs.js:231 +#: client/src/helpers/Jobs.js:227 msgid "Are you sure you want to delete the job below?" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:184 +#: client/src/notifications/notification-templates-list/list.controller.js:182 msgid "Are you sure you want to delete the notification template below?" msgstr "" @@ -270,7 +289,7 @@ msgstr "" msgid "Are you sure you want to delete the organization below?" msgstr "" -#: client/src/controllers/Projects.js:204 +#: client/src/controllers/Projects.js:202 msgid "Are you sure you want to delete the project below?" msgstr "" @@ -278,8 +297,12 @@ msgstr "" msgid "Are you sure you want to delete the user below?" msgstr "" -#: client/src/controllers/Credentials.js:578 -#: client/src/controllers/Projects.js:689 +#: client/src/partials/survey-maker-modal.html:13 +msgid "Are you sure you want to delete this {{deleteMode}}?" +msgstr "" + +#: client/src/controllers/Credentials.js:588 +#: client/src/controllers/Projects.js:704 msgid "Are you sure you want to remove the %s below from %s?" msgstr "" @@ -287,14 +310,14 @@ msgstr "" msgid "Arguments" msgstr "" -#: client/src/forms/Credentials.js:233 -#: client/src/forms/Credentials.js:272 -#: client/src/forms/Credentials.js:312 -#: client/src/forms/Credentials.js:398 +#: client/src/forms/Credentials.js:234 +#: client/src/forms/Credentials.js:273 +#: client/src/forms/Credentials.js:313 +#: client/src/forms/Credentials.js:399 msgid "Ask at runtime?" msgstr "" -#: client/src/shared/form-generator.js:1464 +#: client/src/shared/form-generator.js:1473 msgid "Auditor" msgstr "" @@ -302,23 +325,23 @@ msgstr "" msgid "Authentication" msgstr "" -#: client/src/forms/Credentials.js:73 +#: client/src/forms/Credentials.js:74 msgid "Authentication for network device access. This can include SSH keys, usernames, passwords, and authorize information. Network credentials are used when submitting jobs to run playbooks against network devices." msgstr "" -#: client/src/forms/Credentials.js:69 +#: client/src/forms/Credentials.js:70 msgid "Authentication for remote machine access. This can include SSH keys, usernames, passwords, and sudo information. Machine credentials are used when submitting jobs to run playbooks against remote hosts." msgstr "" -#: client/src/forms/Credentials.js:344 +#: client/src/forms/Credentials.js:345 msgid "Authorize" msgstr "" -#: client/src/forms/Credentials.js:352 +#: client/src/forms/Credentials.js:353 msgid "Authorize Password" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:101 +#: client/src/configuration/auth-form/configuration-auth.controller.js:103 msgid "Azure AD" msgstr "" @@ -326,7 +349,7 @@ msgstr "" msgid "BROWSE" msgstr "" -#: client/src/forms/Projects.js:80 +#: client/src/forms/Projects.js:81 msgid "Base path used for locating playbooks. Directories found inside this path will be listed in the playbook directory drop-down. Together the base path and selected playbook directory provide the full path used to locate playbooks." msgstr "" @@ -338,14 +361,31 @@ msgstr "" msgid "Browse" msgstr "" +#: client/src/partials/survey-maker-modal.html:17 +#: client/src/partials/survey-maker-modal.html:84 +msgid "CANCEL" +msgstr "" + #: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:20 msgid "CHANGES" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:31 +#: client/src/shared/smart-search/smart-search.partial.html:30 msgid "CLEAR ALL" msgstr "" +#: client/src/partials/survey-maker-modal.html:85 +msgid "CLOSE" +msgstr "" + +#: client/src/lists/CompletedJobs.js:18 +msgid "COMPLETED JOBS" +msgstr "" + +#: client/src/configuration/configuration.partial.html:10 +msgid "CONFIGURE TOWER" +msgstr "" + #: client/src/inventories/manage/copy-move/copy-move.route.js:29 #: client/src/inventories/manage/copy-move/copy-move.route.js:65 msgid "COPY OR MOVE" @@ -355,7 +395,15 @@ msgstr "" msgid "CREATE %s" msgstr "" -#: client/src/inventories/main.js:117 +#: client/src/forms/Credentials.js:18 +msgid "CREATE CREDENTIAL" +msgstr "" + +#: client/src/forms/Hosts.js:18 +msgid "CREATE HOST" +msgstr "" + +#: client/src/inventories/main.js:120 #: client/src/scheduler/main.js:190 #: client/src/scheduler/main.js:274 #: client/src/scheduler/main.js:97 @@ -373,32 +421,34 @@ msgstr "" #: client/src/app.js:320 #: client/src/helpers/ActivityStream.js:29 +#: client/src/lists/Credentials.js:18 +#: client/src/lists/Credentials.js:19 msgid "CREDENTIALS" msgstr "" -#: client/src/forms/Projects.js:194 +#: client/src/forms/Projects.js:201 msgid "Cache Timeout" msgstr "" -#: client/src/forms/Projects.js:183 +#: client/src/forms/Projects.js:190 msgid "Cache Timeout%s (seconds)%s" msgstr "" -#: client/src/controllers/Projects.js:195 +#: client/src/controllers/Projects.js:193 #: client/src/controllers/Users.js:95 msgid "Call to %s failed. DELETE returned status:" msgstr "" -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:259 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:257 msgid "Call to %s failed. GET status:" msgstr "" -#: client/src/controllers/Projects.js:683 +#: client/src/controllers/Projects.js:698 msgid "Call to %s failed. POST returned status:" msgstr "" -#: client/src/controllers/Projects.js:222 +#: client/src/controllers/Projects.js:220 msgid "Call to %s failed. POST status:" msgstr "" @@ -406,24 +456,25 @@ msgstr "" msgid "Call to %s failed. Return status: %d" msgstr "" -#: client/src/controllers/Projects.js:268 +#: client/src/controllers/Projects.js:266 msgid "Call to get project failed. GET status:" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:105 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:171 -#: client/src/configuration/configuration.controller.js:449 -#: client/src/helpers/Jobs.js:161 -#: client/src/shared/form-generator.js:1707 +#: client/src/configuration/configuration.controller.js:468 +#: client/src/helpers/Jobs.js:157 +#: client/src/shared/form-generator.js:1716 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:12 #: client/src/workflow-results/workflow-results.partial.html:42 msgid "Cancel" msgstr "" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Cancel Not Allowed" msgstr "" -#: client/src/lists/Projects.js:122 +#: client/src/lists/Projects.js:123 msgid "Cancel the SCM update" msgstr "" @@ -431,17 +482,17 @@ msgstr "" msgid "Cancel the job" msgstr "" -#: client/src/controllers/Projects.js:84 +#: client/src/controllers/Projects.js:82 #: client/src/helpers/Projects.js:79 msgid "Canceled. Click for details" msgstr "" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:80 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:81 msgid "Cannot search running job" msgstr "" -#: client/src/forms/Projects.js:82 +#: client/src/forms/Projects.js:83 msgid "Change %s under \"Configure Tower\" to change this location." msgstr "" @@ -449,7 +500,7 @@ msgstr "" msgid "Changes" msgstr "" -#: client/src/shared/form-generator.js:1083 +#: client/src/shared/form-generator.js:1090 msgid "Choose a %s" msgstr "" @@ -461,7 +512,7 @@ msgstr "" msgid "Choose your license file, agree to the End User License Agreement, and click submit." msgstr "" -#: client/src/forms/Projects.js:151 +#: client/src/forms/Projects.js:158 msgid "Clean" msgstr "" @@ -477,19 +528,19 @@ msgstr "" msgid "Click on a row to select it, and click Finished when done. Use the %s button to create a new job template." msgstr "" -#: client/src/forms/Credentials.js:322 +#: client/src/forms/Credentials.js:323 msgid "Client ID" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:262 +#: client/src/notifications/notificationTemplates.form.js:261 msgid "Client Identifier" msgstr "" -#: client/src/forms/Credentials.js:331 +#: client/src/forms/Credentials.js:332 msgid "Client Secret" msgstr "" -#: client/src/shared/form-generator.js:1711 +#: client/src/shared/form-generator.js:1720 msgid "Close" msgstr "" @@ -504,25 +555,20 @@ msgstr "" msgid "CloudForms URL" msgstr "" -#: client/src/job-results/job-results.controller.js:205 -#: client/src/standard-out/standard-out.controller.js:233 -#: client/src/workflow-results/workflow-results.controller.js:136 +#: client/src/job-results/job-results.controller.js:201 +#: client/src/standard-out/standard-out.controller.js:237 +#: client/src/workflow-results/workflow-results.controller.js:139 msgid "Collapse Output" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:298 +#: client/src/notifications/notificationTemplates.form.js:297 msgid "Color can be one of %s." msgstr "" -#: client/src/lists/CompletedJobs.js:18 -msgid "Completed Jobs" -msgstr "" - #: client/src/management-jobs/card/card.partial.html:32 msgid "Configure Notifications" msgstr "" -#: client/src/configuration/configuration.partial.html:10 #: client/src/setup-menu/setup-menu.partial.html:53 msgid "Configure Tower" msgstr "" @@ -531,11 +577,11 @@ msgstr "" msgid "Confirm Password" msgstr "" -#: client/src/configuration/configuration.controller.js:456 +#: client/src/configuration/configuration.controller.js:475 msgid "Confirm Reset" msgstr "" -#: client/src/configuration/configuration.controller.js:465 +#: client/src/configuration/configuration.controller.js:484 msgid "Confirm factory reset" msgstr "" @@ -558,10 +604,6 @@ msgstr "" msgid "Copy template" msgstr "" -#: client/src/forms/Credentials.js:18 -msgid "Create Credential" -msgstr "" - #: client/src/lists/Users.js:46 msgid "Create New" msgstr "" @@ -583,7 +625,7 @@ msgstr "" msgid "Create a new notification template" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:16 +#: client/src/organizations/list/organizations-list.partial.html:21 msgid "Create a new organization" msgstr "" @@ -626,22 +668,16 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:123 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:57 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:24 -#: client/src/lists/Credentials.js:18 -#: client/src/lists/Credentials.js:19 #: client/src/setup-menu/setup-menu.partial.html:22 msgid "Credentials" msgstr "" -#: client/src/controllers/Credentials.js:348 -msgid "Credentials are only shared within an organization. Assign credentials to an organization to delegate credential permissions. The organization cannot be edited after credentials are assigned." -msgstr "" - #: client/src/shared/directives.js:135 msgid "Current Image:" msgstr "" #: client/src/inventory-scripts/inventory-scripts.form.js:53 -#: client/src/inventory-scripts/inventory-scripts.form.js:63 +#: client/src/inventory-scripts/inventory-scripts.form.js:64 msgid "Custom Script" msgstr "" @@ -649,26 +685,31 @@ msgstr "" msgid "DASHBOARD" msgstr "" -#: client/src/controllers/Credentials.js:106 -#: client/src/controllers/Credentials.js:580 -#: client/src/controllers/Projects.js:691 +#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:590 +#: client/src/controllers/Projects.js:706 #: client/src/controllers/Users.js:104 -#: client/src/notifications/notification-templates-list/list.controller.js:189 +#: client/src/notifications/notification-templates-list/list.controller.js:187 #: client/src/organizations/list/organizations-list.controller.js:168 +#: client/src/partials/survey-maker-modal.html:18 msgid "DELETE" msgstr "" +#: client/src/partials/survey-maker-modal.html:83 +msgid "DELETE SURVEY" +msgstr "" + #: client/src/job-detail/job-detail.partial.html:176 #: client/src/job-detail/job-detail.partial.html:179 msgid "DETAILS" msgstr "" -#: client/src/controllers/Credentials.js:103 -#: client/src/controllers/Credentials.js:577 -#: client/src/controllers/Projects.js:203 -#: client/src/controllers/Projects.js:688 +#: client/src/controllers/Credentials.js:101 +#: client/src/controllers/Credentials.js:587 +#: client/src/controllers/Projects.js:201 +#: client/src/controllers/Projects.js:703 #: client/src/controllers/Users.js:101 -#: client/src/helpers/Jobs.js:165 +#: client/src/helpers/Jobs.js:161 #: client/src/inventory-scripts/inventory-scripts.list.js:74 #: client/src/lists/Credentials.js:91 #: client/src/lists/Inventories.js:92 @@ -676,7 +717,7 @@ msgstr "" #: client/src/lists/Teams.js:77 #: client/src/lists/Templates.js:124 #: client/src/lists/Users.js:81 -#: client/src/notifications/notification-templates-list/list.controller.js:186 +#: client/src/notifications/notification-templates-list/list.controller.js:184 #: client/src/notifications/notificationTemplates.list.js:89 #: client/src/organizations/list/organizations-list.controller.js:165 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:13 @@ -700,7 +741,7 @@ msgstr "" msgid "Delete notification" msgstr "" -#: client/src/forms/Projects.js:161 +#: client/src/forms/Projects.js:168 msgid "Delete on Update" msgstr "" @@ -721,15 +762,15 @@ msgstr "" msgid "Delete the job" msgstr "" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "Delete the local repository in its entirety prior to performing an update." msgstr "" -#: client/src/lists/Projects.js:116 +#: client/src/lists/Projects.js:117 msgid "Delete the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:82 +#: client/src/lists/ScheduledJobs.js:83 msgid "Delete the schedule" msgstr "" @@ -737,11 +778,13 @@ msgstr "" msgid "Delete user" msgstr "" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "Depending on the size of the repository this may significantly increase the amount of time required to complete an update." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:52 #: client/src/forms/Credentials.js:41 +#: client/src/forms/Hosts.js:61 #: client/src/forms/Inventories.js:37 #: client/src/forms/JobTemplates.js:42 #: client/src/forms/Organizations.js:33 @@ -760,36 +803,36 @@ msgstr "" msgid "Description" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:141 -#: client/src/notifications/notificationTemplates.form.js:146 -#: client/src/notifications/notificationTemplates.form.js:158 -#: client/src/notifications/notificationTemplates.form.js:163 -#: client/src/notifications/notificationTemplates.form.js:376 +#: client/src/notifications/notificationTemplates.form.js:140 +#: client/src/notifications/notificationTemplates.form.js:145 +#: client/src/notifications/notificationTemplates.form.js:157 +#: client/src/notifications/notificationTemplates.form.js:162 +#: client/src/notifications/notificationTemplates.form.js:375 msgid "Destination Channels" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:371 +#: client/src/notifications/notificationTemplates.form.js:370 msgid "Destination Channels or Users" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:212 -#: client/src/notifications/notificationTemplates.form.js:217 +#: client/src/notifications/notificationTemplates.form.js:211 +#: client/src/notifications/notificationTemplates.form.js:216 msgid "Destination SMS Number" msgstr "" #: client/src/license/license.partial.html:5 -#: client/src/shared/form-generator.js:1493 +#: client/src/shared/form-generator.js:1502 msgid "Details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:70 +#: client/src/configuration/auth-form/configuration-auth.controller.js:72 #: client/src/configuration/configuration.controller.js:181 #: client/src/configuration/configuration.controller.js:243 #: client/src/configuration/system-form/configuration-system.controller.js:49 msgid "Discard changes" msgstr "" -#: client/src/forms/Teams.js:147 +#: client/src/forms/Teams.js:148 msgid "Dissasociate permission from team" msgstr "" @@ -797,7 +840,7 @@ msgstr "" msgid "Dissasociate permission from user" msgstr "" -#: client/src/forms/Credentials.js:385 +#: client/src/forms/Credentials.js:386 #: client/src/helpers/Credentials.js:134 #: client/src/helpers/Credentials.js:270 msgid "Domain Name" @@ -805,16 +848,24 @@ msgstr "" #: client/src/job-detail/job-detail.partial.html:420 #: client/src/job-results/job-results.controller.js:8 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:114 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:134 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:137 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:102 msgid "Download Output" msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:61 +#: client/src/inventory-scripts/inventory-scripts.form.js:62 msgid "Drag and drop your custom inventory script file here or create one in the field to import your custom inventory." msgstr "" +#: client/src/partials/survey-maker-modal.html:76 +msgid "Drop question here to reorder" +msgstr "" + +#: client/src/configuration/configuration.route.js:30 +msgid "EDIT CONFIGURATION" +msgstr "" + #: client/src/management-jobs/scheduler/main.js:95 msgid "EDIT SCHEDULED JOB" msgstr "" @@ -830,15 +881,15 @@ msgstr "" msgid "EVENT SUMMARY" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:40 +#: client/src/shared/smart-search/smart-search.partial.html:39 msgid "EXAMPLES:" msgstr "" -#: client/src/forms/Projects.js:174 +#: client/src/forms/Projects.js:181 msgid "Each time a job runs using this project, perform an update to the local repository prior to starting the job." msgstr "" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:62 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:63 #: client/src/inventory-scripts/inventory-scripts.list.js:57 #: client/src/lists/Credentials.js:72 #: client/src/lists/Inventories.js:78 @@ -851,13 +902,9 @@ msgstr "" msgid "Edit" msgstr "" -#: client/src/configuration/configuration.route.js:30 -msgid "Edit Configuration" -msgstr "" - -#: client/src/forms/JobTemplates.js:482 -#: client/src/forms/Workflows.js:180 -#: client/src/shared/form-generator.js:1723 +#: client/src/forms/JobTemplates.js:486 +#: client/src/forms/Workflows.js:181 +#: client/src/shared/form-generator.js:1732 msgid "Edit Survey" msgstr "" @@ -869,7 +916,7 @@ msgstr "" msgid "Edit credential" msgstr "" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:66 msgid "Edit host" msgstr "" @@ -901,11 +948,11 @@ msgstr "" msgid "Edit the User" msgstr "" -#: client/src/lists/Projects.js:103 +#: client/src/lists/Projects.js:104 msgid "Edit the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:68 +#: client/src/lists/ScheduledJobs.js:69 msgid "Edit the schedule" msgstr "" @@ -913,7 +960,7 @@ msgstr "" msgid "Edit user" msgstr "" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Either you do not have access or the SCM update process completed. Click the %sRefresh%s button to view the latest status." msgstr "" @@ -925,8 +972,8 @@ msgstr "" msgid "Elapsed" msgstr "" -#: client/src/forms/Credentials.js:192 -#: client/src/forms/Users.js:42 +#: client/src/forms/Credentials.js:193 +#: client/src/forms/Users.js:53 msgid "Email" msgstr "" @@ -955,7 +1002,9 @@ msgstr "" msgid "End User License Agreement" msgstr "" -#: client/src/forms/Inventories.js:60 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:64 +#: client/src/forms/Hosts.js:71 +#: client/src/forms/Inventories.js:61 msgid "Enter inventory variables using either JSON or YAML syntax. Use the radio button to toggle between the two." msgstr "" @@ -974,28 +1023,28 @@ msgstr "" msgid "Enter the hostname or IP address which corresponds to your VMware vCenter." msgstr "" -#: client/src/configuration/configuration.controller.js:307 -#: client/src/configuration/configuration.controller.js:385 -#: client/src/configuration/configuration.controller.js:419 -#: client/src/configuration/configuration.controller.js:438 -#: client/src/controllers/Projects.js:173 -#: client/src/controllers/Projects.js:194 -#: client/src/controllers/Projects.js:222 -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:258 -#: client/src/controllers/Projects.js:267 -#: client/src/controllers/Projects.js:405 -#: client/src/controllers/Projects.js:599 -#: client/src/controllers/Projects.js:665 -#: client/src/controllers/Projects.js:683 +#: client/src/configuration/configuration.controller.js:318 +#: client/src/configuration/configuration.controller.js:403 +#: client/src/configuration/configuration.controller.js:437 +#: client/src/configuration/configuration.controller.js:457 +#: client/src/controllers/Projects.js:171 +#: client/src/controllers/Projects.js:192 +#: client/src/controllers/Projects.js:220 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:256 +#: client/src/controllers/Projects.js:265 +#: client/src/controllers/Projects.js:403 +#: client/src/controllers/Projects.js:614 +#: client/src/controllers/Projects.js:680 +#: client/src/controllers/Projects.js:698 #: client/src/controllers/Users.js:182 #: client/src/controllers/Users.js:271 #: client/src/controllers/Users.js:339 #: client/src/controllers/Users.js:94 #: client/src/helpers/Credentials.js:418 #: client/src/helpers/Credentials.js:434 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:168 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:187 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:172 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:191 #: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:119 #: client/src/management-jobs/card/card.controller.js:150 #: client/src/management-jobs/card/card.controller.js:240 @@ -1018,7 +1067,7 @@ msgstr "" msgid "Event" msgstr "" -#: client/src/widgets/Stream.js:216 +#: client/src/widgets/Stream.js:222 msgid "Event summary not available" msgstr "" @@ -1027,25 +1076,25 @@ msgid "Events" msgstr "" #: client/src/controllers/Projects.js:423 -#: client/src/controllers/Projects.js:706 +#: client/src/controllers/Projects.js:723 msgid "Example URLs for GIT SCM include:" msgstr "" -#: client/src/controllers/Projects.js:436 -#: client/src/controllers/Projects.js:718 +#: client/src/controllers/Projects.js:438 +#: client/src/controllers/Projects.js:737 msgid "Example URLs for Mercurial SCM include:" msgstr "" -#: client/src/controllers/Projects.js:431 -#: client/src/controllers/Projects.js:713 +#: client/src/controllers/Projects.js:432 +#: client/src/controllers/Projects.js:731 msgid "Example URLs for Subversion SCM include:" msgstr "" #: client/src/job-results/job-results.controller.js:11 -#: client/src/job-results/job-results.controller.js:207 -#: client/src/standard-out/standard-out.controller.js:235 +#: client/src/job-results/job-results.controller.js:203 +#: client/src/standard-out/standard-out.controller.js:239 #: client/src/standard-out/standard-out.controller.js:25 -#: client/src/workflow-results/workflow-results.controller.js:138 +#: client/src/workflow-results/workflow-results.controller.js:141 #: client/src/workflow-results/workflow-results.controller.js:97 msgid "Expand Output" msgstr "" @@ -1058,20 +1107,29 @@ msgstr "" msgid "Explanation" msgstr "" -#: client/src/forms/JobTemplates.js:367 -#: client/src/forms/JobTemplates.js:379 -#: client/src/forms/Workflows.js:72 -#: client/src/forms/Workflows.js:84 +#: client/src/forms/JobTemplates.js:371 +#: client/src/forms/JobTemplates.js:383 +#: client/src/forms/Workflows.js:73 +#: client/src/forms/Workflows.js:85 +#: client/src/inventories/manage/adhoc/adhoc.form.js:125 +#: client/src/inventories/manage/adhoc/adhoc.form.js:137 #: client/src/job-detail/job-detail.partial.html:163 #: client/src/partials/logviewer.html:8 msgid "Extra Variables" msgstr "" +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:104 +msgid "" +"Extra Variables\n" +" \n" +" " +msgstr "" + #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:67 msgid "FAILED" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:48 +#: client/src/shared/smart-search/smart-search.partial.html:45 msgid "FIELDS:" msgstr "" @@ -1100,7 +1158,7 @@ msgstr "" msgid "Failed to create new Credential. POST status:" msgstr "" -#: client/src/controllers/Projects.js:406 +#: client/src/controllers/Projects.js:404 msgid "Failed to create new project. POST returned status:" msgstr "" @@ -1108,11 +1166,11 @@ msgstr "" msgid "Failed to get third-party login types. Returned status:" msgstr "" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:188 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:192 msgid "Failed to retrieve job template extra variables." msgstr "" -#: client/src/controllers/Projects.js:600 +#: client/src/controllers/Projects.js:615 msgid "Failed to retrieve project: %s. GET status:" msgstr "" @@ -1121,11 +1179,11 @@ msgstr "" msgid "Failed to retrieve user: %s. GET status:" msgstr "" -#: client/src/configuration/configuration.controller.js:386 +#: client/src/configuration/configuration.controller.js:404 msgid "Failed to save settings. Returned status:" msgstr "" -#: client/src/configuration/configuration.controller.js:420 +#: client/src/configuration/configuration.controller.js:438 msgid "Failed to save toggle settings. Returned status:" msgstr "" @@ -1133,11 +1191,11 @@ msgstr "" msgid "Failed to update Credential. PUT status:" msgstr "" -#: client/src/controllers/Projects.js:665 +#: client/src/controllers/Projects.js:680 msgid "Failed to update project: %s. PUT status:" msgstr "" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:169 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:173 #: client/src/management-jobs/card/card.controller.js:151 #: client/src/management-jobs/card/card.controller.js:241 msgid "Failed updating job %s with variables. POST returned: %d" @@ -1173,8 +1231,8 @@ msgstr "" msgid "First Run" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:54 -msgid "For additional information on advanced search search syntax please see the Ansible Tower documentation." +#: client/src/shared/smart-search/smart-search.partial.html:51 +msgid "For additional information on advanced search search syntax please see the Ansible Tower documentation." msgstr "" #: client/src/helpers/Credentials.js:143 @@ -1183,15 +1241,17 @@ msgid "For example, %s" msgstr "" #: client/src/notifications/notificationTemplates.form.js:101 -#: client/src/notifications/notificationTemplates.form.js:145 -#: client/src/notifications/notificationTemplates.form.js:162 -#: client/src/notifications/notificationTemplates.form.js:216 -#: client/src/notifications/notificationTemplates.form.js:337 -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:144 +#: client/src/notifications/notificationTemplates.form.js:161 +#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "For example:" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:25 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:34 msgid "For hosts that are part of an external inventory, this flag cannot be changed. It will be set by the inventory sync process." msgstr "" @@ -1215,23 +1275,23 @@ msgstr "" msgid "GROUP" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:102 +#: client/src/configuration/auth-form/configuration-auth.controller.js:104 msgid "GitHub" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:103 +#: client/src/configuration/auth-form/configuration-auth.controller.js:105 msgid "GitHub Org" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:104 +#: client/src/configuration/auth-form/configuration-auth.controller.js:106 msgid "GitHub Team" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:105 +#: client/src/configuration/auth-form/configuration-auth.controller.js:107 msgid "Google OAuth2" msgstr "" -#: client/src/forms/Teams.js:156 +#: client/src/forms/Teams.js:157 #: client/src/forms/Users.js:213 msgid "Grant Permission" msgstr "" @@ -1240,12 +1300,14 @@ msgstr "" msgid "Group all of your content to manage permissions across departments in your company." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:13 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:14 #: client/src/dashboard/hosts/main.js:55 #: client/src/helpers/ActivityStream.js:53 msgid "HOSTS" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:327 +#: client/src/notifications/notificationTemplates.form.js:326 msgid "HTTP Headers" msgstr "" @@ -1253,10 +1315,10 @@ msgstr "" msgid "Hide Activity Stream" msgstr "" -#: client/src/forms/Credentials.js:140 +#: client/src/forms/Credentials.js:141 #: client/src/forms/EventsViewer.js:20 #: client/src/lists/JobEvents.js:73 -#: client/src/notifications/notificationTemplates.form.js:75 +#: client/src/notifications/notificationTemplates.form.js:86 msgid "Host" msgstr "" @@ -1270,10 +1332,19 @@ msgstr "" msgid "Host Config Key" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:29 #: client/src/dashboard/hosts/dashboard-hosts.list.js:54 +#: client/src/forms/Hosts.js:38 msgid "Host Enabled" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:35 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:47 +#: client/src/forms/Hosts.js:44 +#: client/src/forms/Hosts.js:55 +msgid "Host Name" +msgstr "" + #: client/src/job-detail/job-detail.partial.html:269 msgid "Host Status" msgstr "" @@ -1282,6 +1353,11 @@ msgstr "" msgid "Host Summary" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:60 +#: client/src/forms/Hosts.js:78 +msgid "Host Variables" +msgstr "" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:25 #: client/src/dashboard/counts/dashboard-counts.directive.js:39 #: client/src/job-detail/job-detail.partial.html:349 @@ -1313,7 +1389,10 @@ msgid "INITIATED BY" msgstr "" #: client/src/helpers/ActivityStream.js:26 -#: client/src/inventories/main.js:298 +#: client/src/inventories/main.js:301 +#: client/src/inventories/main.js:51 +#: client/src/lists/Inventories.js:16 +#: client/src/lists/Inventories.js:17 #: client/src/main-menu/main-menu.partial.html:104 #: client/src/main-menu/main-menu.partial.html:27 #: client/src/organizations/linkout/organizations-linkout.route.js:143 @@ -1325,15 +1404,16 @@ msgid "INVENTORY SCRIPT" msgstr "" #: client/src/helpers/ActivityStream.js:47 +#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/inventory-scripts/main.js:66 msgid "INVENTORY SCRIPTS" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:360 +#: client/src/notifications/notificationTemplates.form.js:359 msgid "IRC Nick" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:349 +#: client/src/notifications/notificationTemplates.form.js:348 msgid "IRC Server Address" msgstr "" @@ -1372,7 +1452,9 @@ msgstr "" msgid "If you are ready to upgrade, please contact us by clicking the button below" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:23 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:32 msgid "Indicates if a host is available and should be included in running jobs." msgstr "" @@ -1389,8 +1471,8 @@ msgstr "" msgid "Invalid License" msgstr "" -#: client/src/license/license.controller.js:69 -#: client/src/license/license.controller.js:76 +#: client/src/license/license.controller.js:70 +#: client/src/license/license.controller.js:77 msgid "Invalid file format. Please upload valid JSON." msgstr "" @@ -1402,8 +1484,6 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:51 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:26 #: client/src/dashboard/counts/dashboard-counts.directive.js:50 -#: client/src/lists/Inventories.js:16 -#: client/src/lists/Inventories.js:17 msgid "Inventories" msgstr "" @@ -1418,7 +1498,6 @@ msgid "Inventory" msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:27 -#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/setup-menu/setup-menu.partial.html:34 msgid "Inventory Scripts" msgstr "" @@ -1431,7 +1510,7 @@ msgstr "" msgid "Inventory Sync Failures" msgstr "" -#: client/src/forms/Inventories.js:67 +#: client/src/forms/Inventories.js:68 msgid "Inventory Variables" msgstr "" @@ -1440,6 +1519,10 @@ msgstr "" msgid "Item" msgstr "" +#: client/src/lists/JobEvents.js:15 +msgid "JOB EVENTS" +msgstr "" + #: client/src/dashboard/graphs/dashboard-graphs.partial.html:4 msgid "JOB STATUS" msgstr "" @@ -1448,22 +1531,22 @@ msgstr "" msgid "JOB TEMPLATE" msgstr "" -#: client/src/organizations/linkout/organizations-linkout.route.js:252 +#: client/src/lists/PortalJobTemplates.js:15 +#: client/src/lists/PortalJobTemplates.js:16 +#: client/src/organizations/linkout/organizations-linkout.route.js:254 msgid "JOB TEMPLATES" msgstr "" #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:113 #: client/src/helpers/ActivityStream.js:44 #: client/src/jobs/jobs.route.js:15 +#: client/src/lists/PortalJobs.js:15 +#: client/src/lists/PortalJobs.js:19 #: client/src/main-menu/main-menu.partial.html:122 #: client/src/main-menu/main-menu.partial.html:43 msgid "JOBS" msgstr "" -#: client/src/lists/JobEvents.js:15 -msgid "Job Events" -msgstr "" - #: client/src/forms/JobTemplates.js:252 #: client/src/forms/JobTemplates.js:260 #: client/src/forms/WorkflowMaker.js:134 @@ -1478,9 +1561,7 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:35 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:97 -#: client/src/lists/PortalJobTemplates.js:15 -#: client/src/lists/PortalJobTemplates.js:16 -#: client/src/organizations/linkout/organizations-linkout.route.js:264 +#: client/src/organizations/linkout/organizations-linkout.route.js:266 msgid "Job Templates" msgstr "" @@ -1496,11 +1577,10 @@ msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:28 #: client/src/configuration/configuration.partial.html:16 #: client/src/jobs/jobs.partial.html:7 -#: client/src/lists/PortalJobs.js:15 -#: client/src/lists/PortalJobs.js:19 msgid "Jobs" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:63 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:90 #: client/src/shared/smart-search/smart-search.partial.html:14 msgid "Key" @@ -1511,7 +1591,7 @@ msgstr "" msgid "LAUNCH TYPE" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:106 +#: client/src/configuration/auth-form/configuration-auth.controller.js:108 msgid "LDAP" msgstr "" @@ -1527,14 +1607,10 @@ msgstr "" msgid "LOG OUT" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:273 -msgid "Label to be shown with notification" -msgstr "" - -#: client/src/forms/JobTemplates.js:355 -#: client/src/forms/JobTemplates.js:360 -#: client/src/forms/Workflows.js:60 -#: client/src/forms/Workflows.js:65 +#: client/src/forms/JobTemplates.js:359 +#: client/src/forms/JobTemplates.js:364 +#: client/src/forms/Workflows.js:61 +#: client/src/forms/Workflows.js:66 #: client/src/lists/AllJobs.js:76 #: client/src/lists/Templates.js:47 msgid "Labels" @@ -1552,7 +1628,7 @@ msgstr "" #: client/src/lists/PortalJobTemplates.js:39 #: client/src/lists/Templates.js:84 -#: client/src/shared/form-generator.js:1715 +#: client/src/shared/form-generator.js:1724 msgid "Launch" msgstr "" @@ -1618,7 +1694,7 @@ msgstr "" #: client/src/job-detail/job-detail.partial.html:316 #: client/src/job-detail/job-detail.partial.html:371 -#: client/src/shared/form-generator.js:1991 +#: client/src/shared/form-generator.js:2002 msgid "Loading..." msgstr "" @@ -1634,6 +1710,7 @@ msgstr "" msgid "Logging" msgstr "" +#: client/src/management-jobs/card/card.partial.html:4 #: client/src/management-jobs/card/card.route.js:21 msgid "MANAGEMENT JOBS" msgstr "" @@ -1642,7 +1719,7 @@ msgstr "" msgid "MY VIEW" msgstr "" -#: client/src/forms/Credentials.js:68 +#: client/src/forms/Credentials.js:69 msgid "Machine" msgstr "" @@ -1660,17 +1737,16 @@ msgstr "" msgid "Management Certificate" msgstr "" -#: client/src/management-jobs/card/card.partial.html:4 #: client/src/setup-menu/setup-menu.partial.html:28 msgid "Management Jobs" msgstr "" -#: client/src/controllers/Projects.js:93 +#: client/src/controllers/Projects.js:91 msgid "Manual projects do not require a schedule" msgstr "" -#: client/src/controllers/Projects.js:589 -#: client/src/controllers/Projects.js:92 +#: client/src/controllers/Projects.js:599 +#: client/src/controllers/Projects.js:90 msgid "Manual projects do not require an SCM update" msgstr "" @@ -1713,6 +1789,42 @@ msgstr "" msgid "NAME" msgstr "" +#: client/src/inventory-scripts/inventory-scripts.form.js:16 +msgid "NEW CUSTOM INVENTORY" +msgstr "" + +#: client/src/forms/Inventories.js:18 +msgid "NEW INVENTORY" +msgstr "" + +#: client/src/forms/JobTemplates.js:20 +msgid "NEW JOB TEMPLATE" +msgstr "" + +#: client/src/notifications/notificationTemplates.form.js:16 +msgid "NEW NOTIFICATION TEMPLATE" +msgstr "" + +#: client/src/forms/Organizations.js:18 +msgid "NEW ORGANIZATION" +msgstr "" + +#: client/src/forms/Projects.js:18 +msgid "NEW PROJECT" +msgstr "" + +#: client/src/forms/Teams.js:18 +msgid "NEW TEAM" +msgstr "" + +#: client/src/forms/Users.js:18 +msgid "NEW USER" +msgstr "" + +#: client/src/forms/Workflows.js:19 +msgid "NEW WORKFLOW JOB TEMPLATE" +msgstr "" + #: client/src/dashboard/hosts/dashboard-hosts.list.js:18 msgid "NO HOSTS FOUND" msgstr "" @@ -1726,6 +1838,7 @@ msgid "NOTIFICATION TEMPLATE" msgstr "" #: client/src/helpers/ActivityStream.js:38 +#: client/src/notifications/notificationTemplates.list.js:14 msgid "NOTIFICATION TEMPLATES" msgstr "" @@ -1735,6 +1848,7 @@ msgstr "" msgid "NOTIFICATIONS" msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:36 #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:14 #: client/src/dashboard/lists/jobs/jobs-list.partial.html:13 #: client/src/forms/Credentials.js:34 @@ -1743,7 +1857,7 @@ msgstr "" #: client/src/forms/LogViewerStatus.js:23 #: client/src/forms/Organizations.js:26 #: client/src/forms/Projects.js:31 -#: client/src/forms/Teams.js:125 +#: client/src/forms/Teams.js:126 #: client/src/forms/Teams.js:27 #: client/src/forms/Users.js:141 #: client/src/forms/Users.js:167 @@ -1770,7 +1884,7 @@ msgstr "" msgid "Name" msgstr "" -#: client/src/forms/Credentials.js:72 +#: client/src/forms/Credentials.js:73 msgid "Network" msgstr "" @@ -1784,47 +1898,11 @@ msgstr "" msgid "Network credentials are used by Ansible networking modules to connect to and manage networking devices." msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:16 -msgid "New Custom Inventory" -msgstr "" - -#: client/src/forms/Inventories.js:18 -msgid "New Inventory" -msgstr "" - -#: client/src/forms/JobTemplates.js:20 -msgid "New Job Template" -msgstr "" - -#: client/src/notifications/notificationTemplates.form.js:16 -msgid "New Notification Template" -msgstr "" - -#: client/src/forms/Organizations.js:18 -msgid "New Organization" -msgstr "" - -#: client/src/forms/Projects.js:18 -msgid "New Project" -msgstr "" - -#: client/src/forms/Teams.js:18 -msgid "New Team" -msgstr "" - -#: client/src/forms/Users.js:18 -msgid "New User" -msgstr "" - -#: client/src/forms/Workflows.js:19 -msgid "New Workflow Job Template" -msgstr "" - #: client/src/controllers/Users.js:174 msgid "New user successfully created!" msgstr "" -#: client/src/lists/ScheduledJobs.js:52 +#: client/src/lists/ScheduledJobs.js:53 #: client/src/lists/Schedules.js:45 msgid "Next Run" msgstr "" @@ -1833,7 +1911,7 @@ msgstr "" msgid "No Credentials Have Been Created" msgstr "" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "No SCM Configuration" msgstr "" @@ -1845,7 +1923,7 @@ msgstr "" msgid "No Teams exist" msgstr "" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "No Updates Available" msgstr "" @@ -1885,16 +1963,16 @@ msgstr "" msgid "No matching tasks" msgstr "" -#: client/src/forms/Teams.js:122 +#: client/src/forms/Teams.js:123 #: client/src/forms/Users.js:190 msgid "No permissions have been granted" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:88 +#: client/src/notifications/notification-templates-list/list.controller.js:86 msgid "No recent notifications." msgstr "" -#: client/src/shared/form-generator.js:1885 +#: client/src/shared/form-generator.js:1896 msgid "No records matched your search." msgstr "" @@ -1906,20 +1984,23 @@ msgstr "" msgid "Normal User" msgstr "" -#: client/src/controllers/Projects.js:95 +#: client/src/controllers/Projects.js:93 msgid "Not configured for SCM" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:296 +#: client/src/notifications/notificationTemplates.form.js:295 msgid "Notification Color" msgstr "" -#: client/src/notifications/notification-templates-list/list.controller.js:115 +#: client/src/notifications/notification-templates-list/list.controller.js:113 msgid "Notification Failed." msgstr "" +#: client/src/notifications/notificationTemplates.form.js:284 +msgid "Notification Label" +msgstr "" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:29 -#: client/src/notifications/notificationTemplates.list.js:14 msgid "Notification Templates" msgstr "" @@ -1929,19 +2010,23 @@ msgstr "" msgid "Notifications" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:309 +#: client/src/notifications/notificationTemplates.form.js:308 msgid "Notify Channel" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:201 +#: client/src/notifications/notificationTemplates.form.js:200 msgid "Number associated with the \"Messaging Service\" in Twilio." msgstr "" -#: client/src/shared/form-generator.js:552 +#: client/src/partials/survey-maker-modal.html:27 +#: client/src/shared/form-generator.js:553 +#: client/src/shared/generator-helpers.js:525 msgid "OFF" msgstr "" -#: client/src/shared/form-generator.js:550 +#: client/src/partials/survey-maker-modal.html:26 +#: client/src/shared/form-generator.js:551 +#: client/src/shared/generator-helpers.js:521 msgid "ON" msgstr "" @@ -1967,17 +2052,17 @@ msgstr "" msgid "On Success" msgstr "" -#: client/src/forms/Credentials.js:380 +#: client/src/forms/Credentials.js:381 msgid "OpenStack domains define administrative boundaries. It is only needed for Keystone v3 authentication URLs. Common scenarios include:" msgstr "" -#: client/src/forms/JobTemplates.js:362 -#: client/src/forms/Workflows.js:67 +#: client/src/forms/JobTemplates.js:366 +#: client/src/forms/Workflows.js:68 msgid "Optional labels that describe this job template, such as 'dev' or 'test'. Labels can be used to group and filter job templates and completed jobs in the Tower display." msgstr "" #: client/src/forms/JobTemplates.js:288 -#: client/src/notifications/notificationTemplates.form.js:395 +#: client/src/notifications/notificationTemplates.form.js:394 #: client/src/partials/logviewer.html:7 msgid "Options" msgstr "" @@ -1988,7 +2073,7 @@ msgstr "" #: client/src/forms/Projects.js:43 #: client/src/forms/Projects.js:49 #: client/src/forms/Teams.js:39 -#: client/src/forms/Users.js:59 +#: client/src/forms/Users.js:42 #: client/src/forms/Workflows.js:47 #: client/src/forms/Workflows.js:53 #: client/src/inventory-scripts/inventory-scripts.form.js:40 @@ -2005,7 +2090,7 @@ msgstr "" msgid "Organizations" msgstr "" -#: client/src/forms/Credentials.js:80 +#: client/src/forms/Credentials.js:81 msgid "Others (Cloud Providers)" msgstr "" @@ -2017,9 +2102,13 @@ msgstr "" msgid "PASSWORD" msgstr "" -#: client/src/organizations/list/organizations-list.partial.html:45 -#: client/src/shared/form-generator.js:1891 -#: client/src/shared/list-generator/list-generator.factory.js:246 +#: client/src/partials/survey-maker-modal.html:45 +msgid "PLEASE ADD A SURVEY PROMPT ON THE LEFT." +msgstr "" + +#: client/src/organizations/list/organizations-list.partial.html:48 +#: client/src/shared/form-generator.js:1902 +#: client/src/shared/list-generator/list-generator.factory.js:242 msgid "PLEASE ADD ITEMS TO THIS LIST" msgstr "" @@ -2027,12 +2116,18 @@ msgstr "" msgid "PORTAL MODE" msgstr "" +#: client/src/partials/survey-maker-modal.html:43 +msgid "PREVIEW" +msgstr "" + #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:73 msgid "PROJECT" msgstr "" #: client/src/app.js:296 #: client/src/helpers/ActivityStream.js:23 +#: client/src/lists/Projects.js:16 +#: client/src/lists/Projects.js:17 #: client/src/main-menu/main-menu.partial.html:19 #: client/src/main-menu/main-menu.partial.html:95 #: client/src/organizations/linkout/organizations-linkout.route.js:194 @@ -2046,16 +2141,20 @@ msgid "" " {{last}}" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:240 +#: client/src/notifications/notificationTemplates.form.js:239 msgid "Pagerduty subdomain" msgstr "" -#: client/src/forms/JobTemplates.js:373 -#: client/src/forms/Workflows.js:78 +#: client/src/forms/JobTemplates.js:377 +#: client/src/forms/Workflows.js:79 msgid "Pass extra command line variables to the playbook. This is the %s or %s command line parameter for %s. Provide key/value pairs using either YAML or JSON." msgstr "" -#: client/src/forms/Credentials.js:227 +#: client/src/inventories/manage/adhoc/adhoc.form.js:131 +msgid "Pass extra command line variables. This is the %s or %s command line parameter for %s. Provide key/value pairs using either YAML or JSON." +msgstr "" + +#: client/src/forms/Credentials.js:228 #: client/src/forms/Users.js:70 #: client/src/helpers/Credentials.js:120 #: client/src/helpers/Credentials.js:128 @@ -2113,19 +2212,19 @@ msgstr "" msgid "Period" msgstr "" -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 #: client/src/controllers/Users.js:141 #: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 msgid "Permission Error" msgstr "" -#: client/src/forms/Credentials.js:440 -#: client/src/forms/Inventories.js:96 -#: client/src/forms/JobTemplates.js:419 -#: client/src/forms/Projects.js:228 -#: client/src/forms/Teams.js:118 +#: client/src/forms/Credentials.js:441 +#: client/src/forms/Inventories.js:97 +#: client/src/forms/JobTemplates.js:423 +#: client/src/forms/Projects.js:235 +#: client/src/forms/Teams.js:119 #: client/src/forms/Users.js:186 -#: client/src/forms/Workflows.js:117 +#: client/src/forms/Workflows.js:118 msgid "Permissions" msgstr "" @@ -2139,7 +2238,7 @@ msgstr "" msgid "Playbook" msgstr "" -#: client/src/forms/Projects.js:89 +#: client/src/forms/Projects.js:90 msgid "Playbook Directory" msgstr "" @@ -2167,20 +2266,24 @@ msgstr "" msgid "Please click the button below to visit Ansible's website to get a Tower license key." msgstr "" -#: client/src/shared/form-generator.js:836 -#: client/src/shared/form-generator.js:950 +#: client/src/shared/form-generator.js:842 +#: client/src/shared/form-generator.js:956 msgid "Please enter a URL that begins with ssh, http or https. The URL may not contain the '@' character." msgstr "" -#: client/src/shared/form-generator.js:1188 +#: client/src/partials/inventory-add.html:11 +msgid "Please enter a name for this job template copy." +msgstr "" + +#: client/src/shared/form-generator.js:1195 msgid "Please enter a number greater than %d and less than %d." msgstr "" -#: client/src/shared/form-generator.js:1190 +#: client/src/shared/form-generator.js:1197 msgid "Please enter a number greater than %d." msgstr "" -#: client/src/shared/form-generator.js:1182 +#: client/src/shared/form-generator.js:1189 msgid "Please enter a number." msgstr "" @@ -2192,14 +2295,14 @@ msgstr "" msgid "Please enter a username." msgstr "" -#: client/src/shared/form-generator.js:826 -#: client/src/shared/form-generator.js:940 +#: client/src/shared/form-generator.js:832 +#: client/src/shared/form-generator.js:946 msgid "Please enter a valid email address." msgstr "" -#: client/src/shared/form-generator.js:1042 -#: client/src/shared/form-generator.js:821 -#: client/src/shared/form-generator.js:935 +#: client/src/shared/form-generator.js:1049 +#: client/src/shared/form-generator.js:827 +#: client/src/shared/form-generator.js:941 msgid "Please enter a value." msgstr "" @@ -2212,16 +2315,16 @@ msgid "Please save before adding notifications" msgstr "" #: client/src/forms/Organizations.js:59 -#: client/src/forms/Teams.js:70 +#: client/src/forms/Teams.js:71 msgid "Please save before adding users" msgstr "" -#: client/src/controllers/Credentials.js:160 -#: client/src/forms/Inventories.js:92 -#: client/src/forms/JobTemplates.js:412 -#: client/src/forms/Projects.js:220 -#: client/src/forms/Teams.js:114 -#: client/src/forms/Workflows.js:110 +#: client/src/controllers/Credentials.js:159 +#: client/src/forms/Inventories.js:93 +#: client/src/forms/JobTemplates.js:416 +#: client/src/forms/Projects.js:227 +#: client/src/forms/Teams.js:115 +#: client/src/forms/Workflows.js:111 msgid "Please save before assigning permissions" msgstr "" @@ -2234,7 +2337,7 @@ msgstr "" msgid "Please save before assigning to teams" msgstr "" -#: client/src/forms/Workflows.js:186 +#: client/src/forms/Workflows.js:187 msgid "Please save before defining the workflow graph" msgstr "" @@ -2254,11 +2357,11 @@ msgstr "" msgid "Please select a Machine Credential or check the Prompt on launch option." msgstr "" -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "Please select a number between" msgstr "" -#: client/src/shared/form-generator.js:1219 +#: client/src/shared/form-generator.js:1226 msgid "Please select a number." msgstr "" @@ -2266,10 +2369,10 @@ msgstr "" msgid "Please select a task below to view its associated hosts" msgstr "" -#: client/src/shared/form-generator.js:1110 -#: client/src/shared/form-generator.js:1179 -#: client/src/shared/form-generator.js:1299 -#: client/src/shared/form-generator.js:1406 +#: client/src/shared/form-generator.js:1117 +#: client/src/shared/form-generator.js:1186 +#: client/src/shared/form-generator.js:1306 +#: client/src/shared/form-generator.js:1415 msgid "Please select a value." msgstr "" @@ -2281,7 +2384,7 @@ msgstr "" msgid "Please select an Inventory." msgstr "" -#: client/src/shared/form-generator.js:1216 +#: client/src/shared/form-generator.js:1223 msgid "Please select at least one value." msgstr "" @@ -2289,22 +2392,26 @@ msgstr "" msgid "Please select resources from the lists below." msgstr "" +#: client/src/controllers/Credentials.js:347 +msgid "Populate the organization field in the form below in order to set permissions." +msgstr "" + #: client/src/notifications/shared/type-change.service.js:27 msgid "Port" msgstr "" -#: client/src/forms/Credentials.js:258 +#: client/src/forms/Credentials.js:259 #: client/src/helpers/Credentials.js:36 #: client/src/helpers/Credentials.js:60 msgid "Private Key" msgstr "" -#: client/src/forms/Credentials.js:265 +#: client/src/forms/Credentials.js:266 msgid "Private Key Passphrase" msgstr "" -#: client/src/forms/Credentials.js:280 -#: client/src/forms/Credentials.js:284 +#: client/src/forms/Credentials.js:281 +#: client/src/forms/Credentials.js:285 msgid "Privilege Escalation" msgstr "" @@ -2331,16 +2438,16 @@ msgstr "" msgid "Project (Tenant Name)" msgstr "" -#: client/src/forms/Projects.js:75 -#: client/src/forms/Projects.js:83 +#: client/src/forms/Projects.js:76 +#: client/src/forms/Projects.js:84 msgid "Project Base Path" msgstr "" -#: client/src/forms/Credentials.js:366 +#: client/src/forms/Credentials.js:367 msgid "Project Name" msgstr "" -#: client/src/forms/Projects.js:100 +#: client/src/forms/Projects.js:101 msgid "Project Path" msgstr "" @@ -2348,7 +2455,7 @@ msgstr "" msgid "Project Sync Failures" msgstr "" -#: client/src/controllers/Projects.js:174 +#: client/src/controllers/Projects.js:172 msgid "Project lookup failed. GET returned:" msgstr "" @@ -2356,8 +2463,6 @@ msgstr "" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:46 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:31 #: client/src/dashboard/counts/dashboard-counts.directive.js:61 -#: client/src/lists/Projects.js:16 -#: client/src/lists/Projects.js:17 msgid "Projects" msgstr "" @@ -2365,12 +2470,16 @@ msgstr "" #: client/src/forms/JobTemplates.js:234 #: client/src/forms/JobTemplates.js:265 #: client/src/forms/JobTemplates.js:283 -#: client/src/forms/JobTemplates.js:384 +#: client/src/forms/JobTemplates.js:388 #: client/src/forms/JobTemplates.js:68 #: client/src/forms/JobTemplates.js:94 msgid "Prompt on launch" msgstr "" +#: client/src/partials/subhome.html:6 +msgid "Properties" +msgstr "" + #: client/src/forms/JobTemplates.js:257 #: client/src/forms/JobTemplates.js:275 #: client/src/forms/WorkflowMaker.js:139 @@ -2378,6 +2487,11 @@ msgstr "" msgid "Provide a comma separated list of tags." msgstr "" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:40 +#: client/src/forms/Hosts.js:48 +msgid "Provide a host name, ip address, or ip address:port. Examples include:" +msgstr "" + #: client/src/forms/JobTemplates.js:225 #: client/src/forms/WorkflowMaker.js:123 msgid "Provide a host pattern to further constrain the list of hosts that will be managed or affected by the playbook. Multiple patterns can be separated by %s %s or %s" @@ -2392,7 +2506,7 @@ msgstr "" msgid "Queued. Click for details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:107 +#: client/src/configuration/auth-form/configuration-auth.controller.js:109 msgid "RADIUS" msgstr "" @@ -2425,7 +2539,7 @@ msgstr "" msgid "REGIONS" msgstr "" -#: client/src/shared/smart-search/smart-search.partial.html:51 +#: client/src/shared/smart-search/smart-search.partial.html:48 msgid "RELATED FIELDS:" msgstr "" @@ -2482,12 +2596,12 @@ msgid "Relaunch using the same parameters" msgstr "" #: client/src/access/add-rbac-user-team/rbac-selected-list.directive.js:37 -#: client/src/forms/Teams.js:143 +#: client/src/forms/Teams.js:144 #: client/src/forms/Users.js:221 msgid "Remove" msgstr "" -#: client/src/forms/Projects.js:153 +#: client/src/forms/Projects.js:160 msgid "Remove any local modifications prior to performing an update." msgstr "" @@ -2499,10 +2613,6 @@ msgstr "" msgid "Request License" msgstr "" -#: client/src/shared/form-generator.js:681 -msgid "Reset" -msgstr "" - #: client/src/forms/EventsViewer.js:62 #: client/src/forms/EventsViewer.js:66 #: client/src/forms/EventsViewer.js:69 @@ -2518,6 +2628,10 @@ msgstr "" msgid "Return Code" msgstr "" +#: client/src/shared/form-generator.js:682 +msgid "Revert" +msgstr "" + #: client/src/configuration/auth-form/sub-forms/auth-azure.form.js:46 #: client/src/configuration/auth-form/sub-forms/auth-github-org.form.js:50 #: client/src/configuration/auth-form/sub-forms/auth-github-team.form.js:50 @@ -2525,10 +2639,10 @@ msgstr "" #: client/src/configuration/auth-form/sub-forms/auth-google-oauth2.form.js:58 #: client/src/configuration/auth-form/sub-forms/auth-ldap.form.js:88 #: client/src/configuration/auth-form/sub-forms/auth-radius.form.js:33 -#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:82 +#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:86 #: client/src/configuration/jobs-form/configuration-jobs.form.js:63 #: client/src/configuration/system-form/sub-forms/system-activity-stream.form.js:25 -#: client/src/configuration/system-form/sub-forms/system-logging.form.js:52 +#: client/src/configuration/system-form/sub-forms/system-logging.form.js:51 #: client/src/configuration/system-form/sub-forms/system-misc.form.js:29 #: client/src/configuration/ui-form/configuration-ui.form.js:35 msgid "Revert all to default" @@ -2538,19 +2652,19 @@ msgstr "" msgid "Revision" msgstr "" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "Revision #" msgstr "" -#: client/src/forms/Credentials.js:462 +#: client/src/forms/Credentials.js:463 #: client/src/forms/EventsViewer.js:36 -#: client/src/forms/Inventories.js:121 +#: client/src/forms/Inventories.js:122 #: client/src/forms/Organizations.js:88 -#: client/src/forms/Projects.js:250 -#: client/src/forms/Teams.js:136 -#: client/src/forms/Teams.js:99 +#: client/src/forms/Projects.js:257 +#: client/src/forms/Teams.js:100 +#: client/src/forms/Teams.js:137 #: client/src/forms/Users.js:204 -#: client/src/forms/Workflows.js:141 +#: client/src/forms/Workflows.js:142 msgid "Role" msgstr "" @@ -2558,36 +2672,45 @@ msgstr "" msgid "Running! Click for details" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:108 +#: client/src/configuration/auth-form/configuration-auth.controller.js:110 msgid "SAML" msgstr "" +#: client/src/partials/survey-maker-modal.html:86 +msgid "SAVE" +msgstr "" + #: client/src/scheduler/main.js:314 msgid "SCHEDULED" msgstr "" +#: client/src/lists/ScheduledJobs.js:15 +msgid "SCHEDULED JOBS" +msgstr "" + #: client/src/helpers/ActivityStream.js:50 -#: client/src/inventories/main.js:59 +#: client/src/inventories/main.js:103 +#: client/src/inventories/main.js:62 #: client/src/management-jobs/scheduler/main.js:26 +#: client/src/management-jobs/scheduler/main.js:32 #: client/src/scheduler/main.js:129 +#: client/src/scheduler/main.js:167 #: client/src/scheduler/main.js:219 +#: client/src/scheduler/main.js:257 #: client/src/scheduler/main.js:36 +#: client/src/scheduler/main.js:74 msgid "SCHEDULES" msgstr "" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "SCM Branch" msgstr "" -#: client/src/forms/Projects.js:154 +#: client/src/forms/Projects.js:161 msgid "SCM Clean" msgstr "" -#: client/src/forms/Projects.js:130 -msgid "SCM Credential" -msgstr "" - -#: client/src/forms/Projects.js:165 +#: client/src/forms/Projects.js:172 msgid "SCM Delete" msgstr "" @@ -2596,25 +2719,25 @@ msgstr "" msgid "SCM Private Key" msgstr "" -#: client/src/forms/Projects.js:56 +#: client/src/forms/Projects.js:57 msgid "SCM Type" msgstr "" #: client/src/dashboard/graphs/dashboard-graphs.partial.html:49 -#: client/src/forms/Projects.js:175 +#: client/src/forms/Projects.js:182 msgid "SCM Update" msgstr "" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "SCM Update Cancel" msgstr "" -#: client/src/forms/Projects.js:145 +#: client/src/forms/Projects.js:152 msgid "SCM Update Options" msgstr "" -#: client/src/controllers/Projects.js:585 -#: client/src/controllers/Projects.js:88 +#: client/src/controllers/Projects.js:595 +#: client/src/controllers/Projects.js:86 msgid "SCM update currently running" msgstr "" @@ -2644,16 +2767,16 @@ msgstr "" msgid "SSH Key" msgstr "" -#: client/src/forms/Credentials.js:256 +#: client/src/forms/Credentials.js:257 msgid "SSH key description" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:388 +#: client/src/notifications/notificationTemplates.form.js:387 msgid "SSL Connection" msgstr "" #: client/src/job-detail/job-detail.partial.html:414 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:108 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:128 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:131 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:96 msgid "STANDARD OUT" @@ -2671,8 +2794,8 @@ msgstr "" msgid "STATUS" msgstr "" -#: client/src/forms/Credentials.js:120 -#: client/src/forms/Credentials.js:128 +#: client/src/forms/Credentials.js:121 +#: client/src/forms/Credentials.js:129 msgid "STS Token" msgstr "" @@ -2689,12 +2812,13 @@ msgstr "" msgid "Satellite 6 URL" msgstr "" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:110 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:176 -#: client/src/shared/form-generator.js:1699 +#: client/src/shared/form-generator.js:1708 msgid "Save" msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:81 +#: client/src/configuration/auth-form/configuration-auth.controller.js:83 #: client/src/configuration/configuration.controller.js:192 #: client/src/configuration/configuration.controller.js:251 #: client/src/configuration/system-form/configuration-system.controller.js:60 @@ -2706,6 +2830,7 @@ msgid "Save successful!" msgstr "" #: client/src/lists/Templates.js:92 +#: client/src/partials/subhome.html:10 msgid "Schedule" msgstr "" @@ -2713,7 +2838,7 @@ msgstr "" msgid "Schedule Management Job" msgstr "" -#: client/src/controllers/Projects.js:80 +#: client/src/controllers/Projects.js:78 msgid "Schedule future SCM updates" msgstr "" @@ -2721,38 +2846,29 @@ msgstr "" msgid "Schedule future job template runs" msgstr "" -#: client/src/lists/ScheduledJobs.js:15 -msgid "Scheduled Jobs" -msgstr "" - #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:32 -#: client/src/inventories/main.js:100 #: client/src/jobs/jobs.partial.html:10 -#: client/src/management-jobs/scheduler/main.js:32 -#: client/src/scheduler/main.js:167 -#: client/src/scheduler/main.js:257 -#: client/src/scheduler/main.js:74 msgid "Schedules" msgstr "" -#: client/src/inventory-scripts/inventory-scripts.form.js:62 +#: client/src/inventory-scripts/inventory-scripts.form.js:63 msgid "Script must begin with a hashbang sequence: i.e.... %s" msgstr "" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:83 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:84 msgid "Search" msgstr "" -#: client/src/forms/Credentials.js:105 +#: client/src/forms/Credentials.js:106 msgid "Secret Key" msgstr "" -#: client/src/forms/Credentials.js:125 +#: client/src/forms/Credentials.js:126 msgid "Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users." msgstr "" -#: client/src/shared/form-generator.js:1703 +#: client/src/shared/form-generator.js:1712 msgid "Select" msgstr "" @@ -2760,20 +2876,20 @@ msgstr "" msgid "Select a role" msgstr "" -#: client/src/configuration/jobs-form/configuration-jobs.controller.js:90 -#: client/src/configuration/ui-form/configuration-ui.controller.js:85 +#: client/src/configuration/jobs-form/configuration-jobs.controller.js:93 +#: client/src/configuration/ui-form/configuration-ui.controller.js:95 msgid "Select commands" msgstr "" -#: client/src/forms/Projects.js:98 +#: client/src/forms/Projects.js:99 msgid "Select from the list of directories found in the Project Base Path. Together the base path and the playbook directory provide the full path used to locate playbooks." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:230 +#: client/src/configuration/auth-form/configuration-auth.controller.js:256 msgid "Select group types" msgstr "" -#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:25 +#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:24 msgid "Select roles" msgstr "" @@ -2795,7 +2911,7 @@ msgstr "" msgid "Select the project containing the playbook you want this job to execute." msgstr "" -#: client/src/configuration/system-form/configuration-system.controller.js:170 +#: client/src/configuration/system-form/configuration-system.controller.js:177 msgid "Select types" msgstr "" @@ -2803,7 +2919,7 @@ msgstr "" msgid "Selecting an optional cloud credential in the job template will pass along the access credentials to the running playbook, allowing provisioning into the cloud without manually passing parameters to the included modules." msgstr "" -#: client/src/notifications/notificationTemplates.form.js:86 +#: client/src/notifications/notificationTemplates.form.js:114 msgid "Sender Email" msgstr "" @@ -2829,7 +2945,7 @@ msgstr "" msgid "Settings" msgstr "" -#: client/src/shared/form-generator.js:851 +#: client/src/shared/form-generator.js:857 msgid "Show" msgstr "" @@ -2861,7 +2977,11 @@ msgstr "" msgid "Skip tags are useful when you have a large playbook, and you want to skip specific parts of a play or task." msgstr "" -#: client/src/forms/Credentials.js:76 +#: client/src/partials/subhome.html:8 +msgid "Source" +msgstr "" + +#: client/src/forms/Credentials.js:77 msgid "Source Control" msgstr "" @@ -2869,7 +2989,7 @@ msgstr "" msgid "Source Details" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:199 +#: client/src/notifications/notificationTemplates.form.js:198 msgid "Source Phone Number" msgstr "" @@ -2877,11 +2997,11 @@ msgstr "" msgid "Source Vars" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:335 msgid "Specify HTTP Headers in JSON format" msgstr "" -#: client/src/forms/Credentials.js:286 +#: client/src/forms/Credentials.js:287 msgid "Specify a method for %s operations. This is equivalent to specifying the %s parameter, where %s could be %s" msgstr "" @@ -2910,8 +3030,8 @@ msgstr "" msgid "Start a job using this template" msgstr "" -#: client/src/controllers/Projects.js:582 -#: client/src/controllers/Projects.js:79 +#: client/src/controllers/Projects.js:592 +#: client/src/controllers/Projects.js:77 msgid "Start an SCM update" msgstr "" @@ -2927,7 +3047,7 @@ msgstr "" #: client/src/forms/LogViewerStatus.js:28 #: client/src/job-detail/job-detail.partial.html:26 #: client/src/lists/JobEvents.js:51 -#: client/src/notifications/notification-templates-list/list.controller.js:73 +#: client/src/notifications/notification-templates-list/list.controller.js:71 #: client/src/partials/logviewer.html:4 msgid "Status" msgstr "" @@ -2940,7 +3060,7 @@ msgstr "" msgid "Submit" msgstr "" -#: client/src/helpers/Jobs.js:230 +#: client/src/helpers/Jobs.js:226 msgid "Submit the request to cancel?" msgstr "" @@ -2948,12 +3068,12 @@ msgstr "" msgid "Subscription" msgstr "" -#: client/src/forms/Credentials.js:152 -#: client/src/forms/Credentials.js:163 +#: client/src/forms/Credentials.js:153 +#: client/src/forms/Credentials.js:164 msgid "Subscription ID" msgstr "" -#: client/src/forms/Credentials.js:162 +#: client/src/forms/Credentials.js:163 msgid "Subscription ID is an Azure construct, which is mapped to a username." msgstr "" @@ -2987,11 +3107,15 @@ msgstr "" #: client/src/app.js:344 #: client/src/helpers/ActivityStream.js:35 +#: client/src/lists/Teams.js:16 +#: client/src/lists/Teams.js:17 #: client/src/organizations/linkout/organizations-linkout.route.js:97 msgid "TEAMS" msgstr "" #: client/src/helpers/ActivityStream.js:56 +#: client/src/lists/Templates.js:17 +#: client/src/lists/Templates.js:18 #: client/src/main-menu/main-menu.partial.html:113 #: client/src/main-menu/main-menu.partial.html:35 #: client/src/templates/list/templates-list.route.js:13 @@ -3007,7 +3131,7 @@ msgstr "" msgid "Tags are useful when you have a large playbook, and you want to run a specific part of a play or task." msgstr "" -#: client/src/notifications/notificationTemplates.form.js:316 +#: client/src/notifications/notificationTemplates.form.js:315 msgid "Target URL" msgstr "" @@ -3019,20 +3143,18 @@ msgstr "" msgid "Tasks" msgstr "" -#: client/src/forms/Credentials.js:468 -#: client/src/forms/Inventories.js:127 -#: client/src/forms/Projects.js:256 -#: client/src/forms/Workflows.js:147 +#: client/src/forms/Credentials.js:469 +#: client/src/forms/Inventories.js:128 +#: client/src/forms/Projects.js:263 +#: client/src/forms/Workflows.js:148 msgid "Team Roles" msgstr "" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:40 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:33 #: client/src/forms/Users.js:158 -#: client/src/lists/Teams.js:16 -#: client/src/lists/Teams.js:17 #: client/src/setup-menu/setup-menu.partial.html:16 -#: client/src/shared/stateDefinitions.factory.js:342 +#: client/src/shared/stateDefinitions.factory.js:345 msgid "Teams" msgstr "" @@ -3042,12 +3164,10 @@ msgid "Template" msgstr "" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:34 -#: client/src/lists/Templates.js:17 -#: client/src/lists/Templates.js:18 msgid "Templates" msgstr "" -#: client/src/forms/Credentials.js:338 +#: client/src/forms/Credentials.js:339 msgid "Tenant ID" msgstr "" @@ -3055,8 +3175,8 @@ msgstr "" msgid "Test notification" msgstr "" -#: client/src/shared/form-generator.js:1414 -#: client/src/shared/form-generator.js:1420 +#: client/src/shared/form-generator.js:1423 +#: client/src/shared/form-generator.js:1429 msgid "That value was not found. Please enter or select a valid value." msgstr "" @@ -3065,7 +3185,7 @@ msgstr "" msgid "The Project ID is the GCE assigned identification. It is constructed as two words followed by a three digit number. Such as:" msgstr "" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "The SCM update process is running." msgstr "" @@ -3073,7 +3193,7 @@ msgstr "" msgid "The credential used to run this command." msgstr "" -#: client/src/forms/Credentials.js:191 +#: client/src/forms/Credentials.js:192 msgid "The email address assigned to the Google Compute Engine %sservice account." msgstr "" @@ -3094,7 +3214,7 @@ msgstr "" msgid "The number of parallel or simultaneous processes to use while executing the playbook. 0 signifies the default value from the %sansible configuration file%s." msgstr "" -#: client/src/job-results/job-results.controller.js:554 +#: client/src/job-results/job-results.controller.js:567 msgid "The output is too large to display. Please download." msgstr "" @@ -3102,7 +3222,7 @@ msgstr "" msgid "The project value" msgstr "" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "The selected project is not configured for SCM. To configure for SCM, edit the project and provide SCM settings, and then run an update." msgstr "" @@ -3126,15 +3246,15 @@ msgstr "" msgid "There are no jobs to display at this time" msgstr "" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "There is no SCM update information available for this project. An update has not yet been completed. If you have not already done so, start an update for this project." msgstr "" -#: client/src/configuration/configuration.controller.js:308 +#: client/src/configuration/configuration.controller.js:319 msgid "There was an error resetting value. Returned status:" msgstr "" -#: client/src/configuration/configuration.controller.js:439 +#: client/src/configuration/configuration.controller.js:458 msgid "There was an error resetting values. Returned status:" msgstr "" @@ -3151,26 +3271,30 @@ msgstr "" msgid "This list is populated by notification templates added from the %sNotifications%s section" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:202 +#: client/src/notifications/notificationTemplates.form.js:201 msgid "This must be of the form %s." msgstr "" +#: client/src/shared/form-generator.js:745 +msgid "This setting has been set manually in a settings file and is now disabled." +msgstr "" + #: client/src/forms/Users.js:163 msgid "This user is not a member of any teams" msgstr "" -#: client/src/shared/form-generator.js:831 -#: client/src/shared/form-generator.js:945 +#: client/src/shared/form-generator.js:837 +#: client/src/shared/form-generator.js:951 msgid "This value does not match the password you entered previously. Please confirm that password." msgstr "" -#: client/src/configuration/configuration.controller.js:464 +#: client/src/configuration/configuration.controller.js:483 msgid "This will reset all configuration values to their factory defaults. Are you sure you want to proceed?" msgstr "" #: client/src/dashboard/lists/jobs/jobs-list.partial.html:14 #: client/src/lists/Streams.js:28 -#: client/src/notifications/notification-templates-list/list.controller.js:74 +#: client/src/notifications/notification-templates-list/list.controller.js:72 msgid "Time" msgstr "" @@ -3178,7 +3302,7 @@ msgstr "" msgid "Time Remaining" msgstr "" -#: client/src/forms/Projects.js:191 +#: client/src/forms/Projects.js:198 msgid "Time in seconds to consider a project to be current. During job runs and callbacks the task system will evaluate the timestamp of the latest project update. If it is older than Cache Timeout, it is not considered current, and a new project update will be performed." msgstr "" @@ -3188,7 +3312,7 @@ msgstr "" msgid "Timing" msgstr "" -#: client/src/forms/Credentials.js:126 +#: client/src/forms/Credentials.js:127 msgid "To learn more about the IAM STS Token, refer to the %sAmazon documentation%s." msgstr "" @@ -3196,7 +3320,7 @@ msgstr "" msgid "Toggle Output" msgstr "" -#: client/src/shared/form-generator.js:856 +#: client/src/shared/form-generator.js:862 msgid "Toggle the display of plaintext." msgstr "" @@ -3209,9 +3333,9 @@ msgstr "" msgid "Traceback" msgstr "" -#: client/src/forms/Credentials.js:61 -#: client/src/forms/Credentials.js:85 -#: client/src/forms/Teams.js:131 +#: client/src/forms/Credentials.js:62 +#: client/src/forms/Credentials.js:86 +#: client/src/forms/Teams.js:132 #: client/src/forms/Users.js:199 #: client/src/forms/WorkflowMaker.js:34 #: client/src/lists/AllJobs.js:61 @@ -3232,18 +3356,18 @@ msgid "Type Details" msgstr "" #: client/src/notifications/notificationTemplates.form.js:100 -#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:214 msgid "Type an option on each line." msgstr "" -#: client/src/notifications/notificationTemplates.form.js:144 -#: client/src/notifications/notificationTemplates.form.js:161 -#: client/src/notifications/notificationTemplates.form.js:374 +#: client/src/notifications/notificationTemplates.form.js:143 +#: client/src/notifications/notificationTemplates.form.js:160 +#: client/src/notifications/notificationTemplates.form.js:373 msgid "Type an option on each line. The pound symbol (#) is not required." msgstr "" -#: client/src/controllers/Projects.js:444 -#: client/src/controllers/Projects.js:726 +#: client/src/controllers/Projects.js:453 +#: client/src/controllers/Projects.js:752 msgid "URL popover text" msgstr "" @@ -3253,19 +3377,21 @@ msgstr "" #: client/src/app.js:368 #: client/src/helpers/ActivityStream.js:32 +#: client/src/lists/Users.js:20 +#: client/src/lists/Users.js:21 #: client/src/organizations/linkout/organizations-linkout.route.js:41 msgid "USERS" msgstr "" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "Update Not Found" msgstr "" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "Update in Progress" msgstr "" -#: client/src/forms/Projects.js:172 +#: client/src/forms/Projects.js:179 msgid "Update on Launch" msgstr "" @@ -3273,24 +3399,24 @@ msgstr "" msgid "Upgrade" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:408 +#: client/src/notifications/notificationTemplates.form.js:407 msgid "Use SSL" msgstr "" -#: client/src/notifications/notificationTemplates.form.js:403 +#: client/src/notifications/notificationTemplates.form.js:402 msgid "Use TLS" msgstr "" -#: client/src/forms/Credentials.js:77 +#: client/src/forms/Credentials.js:78 msgid "Used to check out and synchronize playbook repositories with a remote source control management system such as Git, Subversion (svn), or Mercurial (hg). These credentials are used by Projects." msgstr "" -#: client/src/forms/Credentials.js:457 -#: client/src/forms/Inventories.js:116 +#: client/src/forms/Credentials.js:458 +#: client/src/forms/Inventories.js:117 #: client/src/forms/Organizations.js:83 -#: client/src/forms/Projects.js:245 -#: client/src/forms/Teams.js:94 -#: client/src/forms/Workflows.js:136 +#: client/src/forms/Projects.js:252 +#: client/src/forms/Teams.js:95 +#: client/src/forms/Workflows.js:137 msgid "User" msgstr "" @@ -3303,7 +3429,7 @@ msgid "User Type" msgstr "" #: client/src/access/rbac-multiselect/permissionsUsers.list.js:30 -#: client/src/forms/Users.js:49 +#: client/src/forms/Users.js:60 #: client/src/helpers/Credentials.js:118 #: client/src/helpers/Credentials.js:225 #: client/src/helpers/Credentials.js:254 @@ -3315,16 +3441,14 @@ msgstr "" msgid "Username" msgstr "" -#: client/src/forms/Credentials.js:81 +#: client/src/forms/Credentials.js:82 msgid "Usernames, passwords, and access keys for authenticating to the specified cloud or infrastructure provider. These are used for dynamic inventory sources and for cloud provisioning and deployment in playbook runs." msgstr "" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:35 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:35 #: client/src/forms/Organizations.js:65 -#: client/src/forms/Teams.js:76 -#: client/src/lists/Users.js:20 -#: client/src/lists/Users.js:21 +#: client/src/forms/Teams.js:77 #: client/src/setup-menu/setup-menu.partial.html:10 msgid "Users" msgstr "" @@ -3346,11 +3470,13 @@ msgstr "" msgid "Valid License" msgstr "" -#: client/src/forms/Inventories.js:55 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:56 +#: client/src/forms/Hosts.js:66 +#: client/src/forms/Inventories.js:56 msgid "Variables" msgstr "" -#: client/src/forms/Credentials.js:392 +#: client/src/forms/Credentials.js:393 msgid "Vault Password" msgstr "" @@ -3361,7 +3487,6 @@ msgstr "" msgid "Verbosity" msgstr "" -#: client/src/about/about.controller.js:24 #: client/src/license/license.partial.html:15 msgid "Version" msgstr "" @@ -3388,17 +3513,21 @@ msgstr "" msgid "View Documentation" msgstr "" -#: client/src/forms/Inventories.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:69 +#: client/src/forms/Hosts.js:76 +#: client/src/forms/Inventories.js:66 msgid "View JSON examples at %s" msgstr "" -#: client/src/forms/JobTemplates.js:466 -#: client/src/forms/Workflows.js:164 -#: client/src/shared/form-generator.js:1727 +#: client/src/forms/JobTemplates.js:470 +#: client/src/forms/Workflows.js:165 +#: client/src/shared/form-generator.js:1736 msgid "View Survey" msgstr "" -#: client/src/forms/Inventories.js:66 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:70 +#: client/src/forms/Hosts.js:77 +#: client/src/forms/Inventories.js:67 msgid "View YAML examples at %s" msgstr "" @@ -3451,11 +3580,11 @@ msgstr "" msgid "View the job" msgstr "" -#: client/src/lists/Projects.js:109 +#: client/src/lists/Projects.js:110 msgid "View the project" msgstr "" -#: client/src/lists/ScheduledJobs.js:75 +#: client/src/lists/ScheduledJobs.js:76 msgid "View the schedule" msgstr "" @@ -3478,7 +3607,7 @@ msgstr "" msgid "Waiting..." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:68 +#: client/src/configuration/auth-form/configuration-auth.controller.js:70 #: client/src/configuration/configuration.controller.js:179 #: client/src/configuration/configuration.controller.js:241 #: client/src/configuration/system-form/configuration-system.controller.js:47 @@ -3498,8 +3627,8 @@ msgstr "" msgid "When this template is submitted as a job, setting the type to %s will execute the playbook, running tasks on the selected hosts." msgstr "" -#: client/src/forms/Workflows.js:188 -#: client/src/shared/form-generator.js:1731 +#: client/src/forms/Workflows.js:189 +#: client/src/shared/form-generator.js:1740 msgid "Workflow Editor" msgstr "" @@ -3516,7 +3645,7 @@ msgstr "" msgid "You can create a job template here." msgstr "" -#: client/src/controllers/Projects.js:510 +#: client/src/controllers/Projects.js:519 msgid "You do not have access to view this property" msgstr "" @@ -3524,7 +3653,7 @@ msgstr "" msgid "You do not have permission to add a job template." msgstr "" -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 msgid "You do not have permission to add a project." msgstr "" @@ -3532,34 +3661,34 @@ msgstr "" msgid "You do not have permission to add a user." msgstr "" -#: client/src/configuration/auth-form/configuration-auth.controller.js:67 +#: client/src/configuration/auth-form/configuration-auth.controller.js:69 #: client/src/configuration/configuration.controller.js:178 #: client/src/configuration/configuration.controller.js:240 #: client/src/configuration/system-form/configuration-system.controller.js:46 msgid "You have unsaved changes. Would you like to proceed without saving?" msgstr "" -#: client/src/shared/form-generator.js:957 +#: client/src/shared/form-generator.js:963 msgid "Your password must be %d characters long." msgstr "" -#: client/src/shared/form-generator.js:962 +#: client/src/shared/form-generator.js:968 msgid "Your password must contain a lowercase letter." msgstr "" -#: client/src/shared/form-generator.js:972 +#: client/src/shared/form-generator.js:978 msgid "Your password must contain a number." msgstr "" -#: client/src/shared/form-generator.js:967 +#: client/src/shared/form-generator.js:973 msgid "Your password must contain an uppercase letter." msgstr "" -#: client/src/shared/form-generator.js:977 +#: client/src/shared/form-generator.js:983 msgid "Your password must contain one of the following characters: %s" msgstr "" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "Your request to cancel the update was submitted to the task manager." msgstr "" @@ -3567,7 +3696,7 @@ msgstr "" msgid "Your session timed out due to inactivity. Please sign in." msgstr "" -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "and" msgstr "" @@ -3579,19 +3708,19 @@ msgstr "" msgid "organization" msgstr "" -#: client/src/forms/Credentials.js:139 -#: client/src/forms/Credentials.js:365 +#: client/src/forms/Credentials.js:140 +#: client/src/forms/Credentials.js:366 msgid "set in helpers/credentials" msgstr "" -#: client/src/forms/Credentials.js:382 +#: client/src/forms/Credentials.js:383 msgid "v2 URLs%s - leave blank" msgstr "" -#: client/src/forms/Credentials.js:383 +#: client/src/forms/Credentials.js:384 msgid "v3 default%s - set to 'default'" msgstr "" -#: client/src/forms/Credentials.js:384 +#: client/src/forms/Credentials.js:385 msgid "v3 multi-domain%s - your domain name" msgstr "" diff --git a/awx/ui/po/es.po b/awx/ui/po/es.po index 4629578866..7c1ca58d49 100644 --- a/awx/ui/po/es.po +++ b/awx/ui/po/es.po @@ -1,33 +1,35 @@ +# Carlos Munoz , 2017. #zanata +# mkim , 2017. #zanata msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: ANSIBLE TOWER UI 0.1\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Alberto Gonzalez \n" +"Project-Id-Version: \n" +"PO-Revision-Date: 2017-04-20 03:23+0000\n" +"Last-Translator: Carlos Munoz \n" "Language-Team: \n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"X-Generator: Poedit 1.6.10\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.1.1\n" -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "%s or %s" msgstr "%s o %s" -#: client/src/controllers/Projects.js:439 -#: client/src/controllers/Projects.js:721 +#: client/src/controllers/Projects.js:441 +#: client/src/controllers/Projects.js:740 msgid "" -"%sNote:%s 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 " +"%sNote:%s 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." msgstr "" "%sNota%s: Mercurial no soporta autentificación utilizando contraseña. No " -"introduzca el usuario y la clave en la dirección URL. Si utiliza Bitbucket y " -"SSH, no indique su usuario de Bitbucket." +"introduzca el usuario y la clave en la dirección URL. Si utiliza Bitbucket y" +" SSH, no indique su usuario de Bitbucket." #: client/src/controllers/Projects.js:426 -#: client/src/controllers/Projects.js:708 +#: client/src/controllers/Projects.js:725 msgid "" "%sNote:%s When using SSH protocol for GitHub or Bitbucket, enter an SSH key " "only, do not enter a username (other than git). Additionally, GitHub and " @@ -40,14 +42,34 @@ msgstr "" "contraseña cuando se utiliza SSH. El protocolo de sólo lectura GIT (git://) " "no utiliza usuario y contraseña." -#: client/src/forms/Credentials.js:288 +#: client/src/forms/Credentials.js:289 msgid "(defaults to %s)" msgstr "(valor por defecto a %s)" -#: client/src/organizations/list/organizations-list.partial.html:15 +#: client/src/organizations/list/organizations-list.partial.html:20 msgid "+ ADD" msgstr "+ AÑADIR" +#: client/src/partials/subhome.html:30 +#, fuzzy +msgid " Back to options" +msgstr " Regresar a opciones" + +#: client/src/partials/subhome.html:32 +#, fuzzy +msgid " Save" +msgstr " Guardar" + +#: client/src/partials/subhome.html:29 +#, fuzzy +msgid " View Details" +msgstr " Ver Detalles" + +#: client/src/partials/subhome.html:31 +#, fuzzy +msgid " Cancel" +msgstr " Cancelar" + #: client/src/management-jobs/scheduler/schedulerForm.partial.html:33 msgid "A schedule name is required." msgstr "Un nombre para el planificador es necesario." @@ -68,19 +90,26 @@ msgstr "ACERCA DE" msgid "ACTION" msgstr "ACCIÓN" +#: client/src/forms/ActivityDetail.js:25 +#, fuzzy +msgid "ACTIVITY DETAIL" +msgstr "DETALLES DE ACTIVIDAD" + #: client/src/activity-stream/activitystream.route.js:27 +#: client/src/lists/Streams.js:16 client/src/lists/Streams.js:17 msgid "ACTIVITY STREAM" msgstr "FLUJO DE ACTIVIDAD" -#: client/src/forms/Credentials.js:450 client/src/forms/JobTemplates.js:430 -#: client/src/forms/Organizations.js:75 client/src/forms/Projects.js:238 -#: client/src/forms/Teams.js:86 client/src/forms/Workflows.js:128 +#: client/src/forms/Credentials.js:451 client/src/forms/JobTemplates.js:434 +#: client/src/forms/Organizations.js:75 client/src/forms/Projects.js:245 +#: client/src/forms/Teams.js:87 client/src/forms/Workflows.js:129 #: client/src/inventory-scripts/inventory-scripts.list.js:45 #: client/src/lists/Credentials.js:60 client/src/lists/Inventories.js:68 #: client/src/lists/Projects.js:77 client/src/lists/Schedules.js:70 #: client/src/lists/Teams.js:50 client/src/lists/Templates.js:62 #: client/src/lists/Users.js:52 #: client/src/notifications/notificationTemplates.list.js:52 +#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 msgid "ADD" msgstr "AÑADIR" @@ -88,15 +117,15 @@ msgstr "AÑADIR" msgid "ADD NOTIFICATION TEMPLATE" msgstr "AÑADIR UNA PLANTILLA DE NOTIFICACIÓN" -#: client/src/forms/Teams.js:158 client/src/forms/Users.js:215 +#: client/src/forms/Teams.js:159 client/src/forms/Users.js:215 msgid "ADD PERMISSIONS" msgstr "AÑADIR PERMISOS" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 msgid "ADDITIONAL INFORMATION:" msgstr "INFORMACIÓN ADICIONAL:" -#: client/src/organizations/linkout/organizations-linkout.route.js:325 +#: client/src/organizations/linkout/organizations-linkout.route.js:328 msgid "ADMINS" msgstr "ADMINS" @@ -104,11 +133,16 @@ msgstr "ADMINS" msgid "ALL ACTIVITY" msgstr "TODA LA ACTIVIDAD" -#: client/src/forms/Credentials.js:199 +#: client/src/lists/AllJobs.js:16 +#, fuzzy +msgid "ALL JOBS" +msgstr "TODOS LOS TRABAJOS" + +#: client/src/forms/Credentials.js:200 msgid "API Key" msgstr "Clave API" -#: client/src/notifications/notificationTemplates.form.js:251 +#: client/src/notifications/notificationTemplates.form.js:250 msgid "API Service/Integration Key" msgstr "Servicio API/Clave de integración" @@ -120,15 +154,15 @@ msgstr "Token API" msgid "About Tower" msgstr "Sobre Tower" -#: client/src/forms/Credentials.js:92 +#: client/src/forms/Credentials.js:93 msgid "Access Key" msgstr "Clave de acceso" -#: client/src/notifications/notificationTemplates.form.js:229 +#: client/src/notifications/notificationTemplates.form.js:228 msgid "Account SID" msgstr "Cuenta SID" -#: client/src/notifications/notificationTemplates.form.js:187 +#: client/src/notifications/notificationTemplates.form.js:186 msgid "Account Token" msgstr "Cuenta Token" @@ -137,7 +171,7 @@ msgid "Action" msgstr "Acción" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:20 -#: client/src/shared/list-generator/list-generator.factory.js:547 +#: client/src/shared/list-generator/list-generator.factory.js:543 msgid "Actions" msgstr "Acciones" @@ -146,18 +180,12 @@ msgstr "Acciones" msgid "Activity" msgstr "Actividad" -#: client/src/forms/ActivityDetail.js:25 -msgid "Activity Detail" -msgstr "Detalles de la actividad" - #: client/src/configuration/system-form/configuration-system.controller.js:81 -#: client/src/lists/Streams.js:16 client/src/lists/Streams.js:17 msgid "Activity Stream" msgstr "Flujo de actividad" -#: client/src/forms/Inventories.js:105 client/src/forms/Organizations.js:72 -#: client/src/forms/Teams.js:83 client/src/forms/Workflows.js:125 -#: client/src/organizations/linkout/addUsers/addUsers.partial.html:8 +#: client/src/forms/Inventories.js:106 client/src/forms/Organizations.js:72 +#: client/src/forms/Teams.js:84 client/src/forms/Workflows.js:126 msgid "Add" msgstr "Añadir" @@ -177,7 +205,7 @@ msgstr "Añadir inventarios" msgid "Add Notification" msgstr "Añadir notificación" -#: client/src/shared/stateDefinitions.factory.js:277 +#: client/src/shared/stateDefinitions.factory.js:280 msgid "Add Permissions" msgstr "Añadir permisos" @@ -185,8 +213,8 @@ msgstr "Añadir permisos" msgid "Add Project" msgstr "Añadir proyecto" -#: client/src/forms/JobTemplates.js:475 client/src/forms/Workflows.js:173 -#: client/src/shared/form-generator.js:1719 +#: client/src/forms/JobTemplates.js:479 client/src/forms/Workflows.js:174 +#: client/src/shared/form-generator.js:1728 msgid "Add Survey" msgstr "Añadir cuestionario" @@ -194,13 +222,13 @@ msgstr "Añadir cuestionario" msgid "Add Team" msgstr "Añadir equipo" -#: client/src/forms/Teams.js:84 +#: client/src/forms/Teams.js:85 msgid "Add User" msgstr "Añadir usuario" #: client/src/lists/Users.js:19 -#: client/src/shared/stateDefinitions.factory.js:342 -#: client/src/shared/stateDefinitions.factory.js:511 +#: client/src/shared/stateDefinitions.factory.js:345 +#: client/src/shared/stateDefinitions.factory.js:518 msgid "Add Users" msgstr "Añadir usuarios" @@ -212,9 +240,9 @@ msgstr "Añadir usuarios a la organización." msgid "Add a new schedule" msgstr "Añadir un nuevo planificador" -#: client/src/forms/Credentials.js:448 client/src/forms/Inventories.js:107 -#: client/src/forms/JobTemplates.js:428 client/src/forms/Projects.js:236 -#: client/src/forms/Workflows.js:126 +#: client/src/forms/Credentials.js:449 client/src/forms/Inventories.js:108 +#: client/src/forms/JobTemplates.js:432 client/src/forms/Projects.js:243 +#: client/src/forms/Workflows.js:127 msgid "Add a permission" msgstr "Añadir un permiso" @@ -224,10 +252,10 @@ msgid "" "machines, or when syncing inventories or projects." msgstr "" "Añadir contraseñas, claves SSH, etc. para ser utilizadas por Tower al " -"ejecutar un nuevo trabajo sobre máquinas, o cuando se sincroniza inventarios " -"o proyectos." +"ejecutar un nuevo trabajo sobre máquinas, o cuando se sincroniza inventarios" +" o proyectos." -#: client/src/shared/form-generator.js:1462 +#: client/src/shared/form-generator.js:1471 msgid "Admin" msgstr "Administrador" @@ -245,7 +273,6 @@ msgstr "Todo" msgid "All Activity" msgstr "Todas las actividades" -#: client/src/lists/AllJobs.js:16 #: client/src/portal-mode/portal-mode-jobs.partial.html:7 #: client/src/portal-mode/portal-mode-layout.partial.html:12 msgid "All Jobs" @@ -263,7 +290,7 @@ msgstr "Permitir a otros entrar en Tower y poseer el contenido que creen." msgid "Always" msgstr "Siempre" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "" "An SCM update does not appear to be running for project: %s. Click the " "%sRefresh%s button to view the latest status." @@ -272,15 +299,15 @@ msgstr "" "proyectos: %s. Pulse sobre el botón %sActualizar%s para ver el estado más " "reciente." -#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:102 msgid "Are you sure you want to delete the credential below?" msgstr "¿Está seguro que quiere eliminar la credencial indicada?" -#: client/src/helpers/Jobs.js:231 +#: client/src/helpers/Jobs.js:227 msgid "Are you sure you want to delete the job below?" msgstr "¿Está seguro que quiere eliminar el trabajo indicado?" -#: client/src/notifications/notification-templates-list/list.controller.js:184 +#: client/src/notifications/notification-templates-list/list.controller.js:182 msgid "Are you sure you want to delete the notification template below?" msgstr "" "¿Está seguro que quiere eliminar la plantilla de notificación indicada?" @@ -289,7 +316,7 @@ msgstr "" msgid "Are you sure you want to delete the organization below?" msgstr "¿Está seguro que quiere eliminar la organización indicada?" -#: client/src/controllers/Projects.js:204 +#: client/src/controllers/Projects.js:202 msgid "Are you sure you want to delete the project below?" msgstr "¿Está seguro que quiere eliminar el proyecto indicado?" @@ -297,8 +324,13 @@ msgstr "¿Está seguro que quiere eliminar el proyecto indicado?" msgid "Are you sure you want to delete the user below?" msgstr "¿Está seguro que quiere eliminar el usuario indicado?" -#: client/src/controllers/Credentials.js:578 -#: client/src/controllers/Projects.js:689 +#: client/src/partials/survey-maker-modal.html:13 +#, fuzzy +msgid "Are you sure you want to delete this {{deleteMode}}?" +msgstr "¿Esta seguro de que desea eliminar este {{deleteMode}}?" + +#: client/src/controllers/Credentials.js:588 +#: client/src/controllers/Projects.js:704 msgid "Are you sure you want to remove the %s below from %s?" msgstr "¿Esa seguro que quiere eliminar el %s indicado de %s?" @@ -306,12 +338,12 @@ msgstr "¿Esa seguro que quiere eliminar el %s indicado de %s?" msgid "Arguments" msgstr "Argumentos" -#: client/src/forms/Credentials.js:233 client/src/forms/Credentials.js:272 -#: client/src/forms/Credentials.js:312 client/src/forms/Credentials.js:398 +#: client/src/forms/Credentials.js:234 client/src/forms/Credentials.js:273 +#: client/src/forms/Credentials.js:313 client/src/forms/Credentials.js:399 msgid "Ask at runtime?" msgstr "¿Preguntar durante la ejecución?" -#: client/src/shared/form-generator.js:1464 +#: client/src/shared/form-generator.js:1473 msgid "Auditor" msgstr "Auditor" @@ -319,7 +351,7 @@ msgstr "Auditor" msgid "Authentication" msgstr "Identificación" -#: client/src/forms/Credentials.js:73 +#: client/src/forms/Credentials.js:74 msgid "" "Authentication for network device access. This can include SSH keys, " "usernames, passwords, and authorize information. Network credentials are " @@ -330,7 +362,7 @@ msgstr "" "de Red son utilizadas al lanzar trabajos que ejecutan playbooks sobre " "dispositivos de red." -#: client/src/forms/Credentials.js:69 +#: client/src/forms/Credentials.js:70 msgid "" "Authentication for remote machine access. This can include SSH keys, " "usernames, passwords, and sudo information. Machine credentials are used " @@ -341,15 +373,15 @@ msgstr "" "utilizadas al lanzar trabajos que ejecutan playbooks contra servidores " "remotos." -#: client/src/forms/Credentials.js:344 +#: client/src/forms/Credentials.js:345 msgid "Authorize" msgstr "Autorizar" -#: client/src/forms/Credentials.js:352 +#: client/src/forms/Credentials.js:353 msgid "Authorize Password" msgstr "Contraseña de autorización" -#: client/src/configuration/auth-form/configuration-auth.controller.js:101 +#: client/src/configuration/auth-form/configuration-auth.controller.js:103 msgid "Azure AD" msgstr "Azure AD" @@ -357,7 +389,7 @@ msgstr "Azure AD" msgid "BROWSE" msgstr "NAVEGAR" -#: client/src/forms/Projects.js:80 +#: client/src/forms/Projects.js:81 msgid "" "Base path used for locating playbooks. Directories found inside this path " "will be listed in the playbook directory drop-down. Together the base path " @@ -378,14 +410,35 @@ msgstr "Activar la escalada de privilegios" msgid "Browse" msgstr "Navegar" +#: client/src/partials/survey-maker-modal.html:17 +#: client/src/partials/survey-maker-modal.html:84 +#, fuzzy +msgid "CANCEL" +msgstr "CANCELAR" + #: client/src/activity-stream/streamDetailModal/streamDetailModal.partial.html:20 msgid "CHANGES" msgstr "MODIFICACIONES" -#: client/src/shared/smart-search/smart-search.partial.html:31 +#: client/src/shared/smart-search/smart-search.partial.html:30 msgid "CLEAR ALL" msgstr "LIMPIAR TODO" +#: client/src/partials/survey-maker-modal.html:85 +#, fuzzy +msgid "CLOSE" +msgstr "CERRAR" + +#: client/src/lists/CompletedJobs.js:18 +#, fuzzy +msgid "COMPLETED JOBS" +msgstr "TRABAJOS COMPLETADOS" + +#: client/src/configuration/configuration.partial.html:10 +#, fuzzy +msgid "CONFIGURE TOWER" +msgstr "CONFIGURAR TORRE" + #: client/src/inventories/manage/copy-move/copy-move.route.js:29 #: client/src/inventories/manage/copy-move/copy-move.route.js:65 msgid "COPY OR MOVE" @@ -395,7 +448,17 @@ msgstr "COPIAR O MOVER" msgid "CREATE %s" msgstr "CREAR %s" -#: client/src/inventories/main.js:117 client/src/scheduler/main.js:190 +#: client/src/forms/Credentials.js:18 +#, fuzzy +msgid "CREATE CREDENTIAL" +msgstr "CREAR CREDENCIAL" + +#: client/src/forms/Hosts.js:18 +#, fuzzy +msgid "CREATE HOST" +msgstr "CREAR HOST" + +#: client/src/inventories/main.js:120 client/src/scheduler/main.js:190 #: client/src/scheduler/main.js:274 client/src/scheduler/main.js:97 msgid "CREATE SCHEDULE" msgstr "CREAR PROGRAMACIÓN" @@ -410,55 +473,57 @@ msgid "CREDENTIAL" msgstr "CREDENCIAL" #: client/src/app.js:320 client/src/helpers/ActivityStream.js:29 +#: client/src/lists/Credentials.js:18 client/src/lists/Credentials.js:19 msgid "CREDENTIALS" msgstr "CREDENCIALES" -#: client/src/forms/Projects.js:194 +#: client/src/forms/Projects.js:201 msgid "Cache Timeout" msgstr "Tiempo de espera para la expiración de la caché" -#: client/src/forms/Projects.js:183 +#: client/src/forms/Projects.js:190 msgid "Cache Timeout%s (seconds)%s" msgstr "Tiempo de espera para la expiración de la caché%s (segundos)%s" -#: client/src/controllers/Projects.js:195 client/src/controllers/Users.js:95 +#: client/src/controllers/Projects.js:193 client/src/controllers/Users.js:95 msgid "Call to %s failed. DELETE returned status:" msgstr "Fallo en la llamada a %s. DELETE ha devuelto el estado:" -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:259 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:257 msgid "Call to %s failed. GET status:" msgstr "Fallo en la llamada a %s. Estado GET:" -#: client/src/controllers/Projects.js:683 +#: client/src/controllers/Projects.js:698 msgid "Call to %s failed. POST returned status:" msgstr "Fallo en la llamada a %s. POST ha devuelto el estado:" -#: client/src/controllers/Projects.js:222 +#: client/src/controllers/Projects.js:220 msgid "Call to %s failed. POST status:" -msgstr "Fallo en la llamada a %s. Estado POST :" +msgstr "Fallo en la llamada a %s. Estado POST :" #: client/src/management-jobs/card/card.controller.js:30 msgid "Call to %s failed. Return status: %d" msgstr "Fallo en la llamada a %s. Ha devuelto el estado: %d" -#: client/src/controllers/Projects.js:268 +#: client/src/controllers/Projects.js:266 msgid "Call to get project failed. GET status:" -msgstr "Fallo en la obtención del proyecto. Estado GET :" +msgstr "Fallo en la obtención del proyecto. Estado GET :" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:105 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:171 -#: client/src/configuration/configuration.controller.js:449 -#: client/src/helpers/Jobs.js:161 client/src/shared/form-generator.js:1707 +#: client/src/configuration/configuration.controller.js:468 +#: client/src/helpers/Jobs.js:157 client/src/shared/form-generator.js:1716 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:12 #: client/src/workflow-results/workflow-results.partial.html:42 msgid "Cancel" msgstr "Cancelar" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "Cancel Not Allowed" msgstr "Cancelación no permitida." -#: client/src/lists/Projects.js:122 +#: client/src/lists/Projects.js:123 msgid "Cancel the SCM update" msgstr "Cancelar la actualización de SCM" @@ -466,25 +531,24 @@ msgstr "Cancelar la actualización de SCM" msgid "Cancel the job" msgstr "Cancelar el trabajo." -#: client/src/controllers/Projects.js:84 client/src/helpers/Projects.js:79 +#: client/src/controllers/Projects.js:82 client/src/helpers/Projects.js:79 msgid "Canceled. Click for details" msgstr "Cancelado. Pulse para mostrar más detalles." -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:80 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:81 msgid "Cannot search running job" msgstr "Imposible buscar en trabajos en ejecución." -#: client/src/forms/Projects.js:82 +#: client/src/forms/Projects.js:83 msgid "Change %s under \"Configure Tower\" to change this location." -msgstr "" -"Modificar %s dentro de \"Configurar Tower\" para cambiar esta ubicación." +msgstr "Modificar %s dentro de \"Configurar Tower\" para cambiar esta ubicación." #: client/src/forms/ActivityDetail.js:43 msgid "Changes" msgstr "Modificaciones" -#: client/src/shared/form-generator.js:1083 +#: client/src/shared/form-generator.js:1090 msgid "Choose a %s" msgstr "Escoger un %s" @@ -494,13 +558,13 @@ msgstr "Escoger fichero" #: client/src/license/license.partial.html:97 msgid "" -"Choose your license file, agree to the End User License Agreement, and click " -"submit." +"Choose your license file, agree to the End User License Agreement, and click" +" submit." msgstr "" "Escoja su fichero de licencia, aceptando el Acuerdo de licencia de usuario " "final, y pulse sobre validar." -#: client/src/forms/Projects.js:151 +#: client/src/forms/Projects.js:158 msgid "Clean" msgstr "Limpiar" @@ -522,25 +586,26 @@ msgstr "" #: client/src/lists/Templates.js:19 msgid "" -"Click on a row to select it, and click Finished when done. Use the %s button " -"to create a new job template." +"Click on a row to select it, and click Finished when done. Use the %s button" +" to create a new job template." msgstr "" "Pulse sobre una fila para seleccionarla, y pulse Finalizado una vez " -"terminado. Pulse sobre el botón %s para crear una nueva plantilla de trabajo." +"terminado. Pulse sobre el botón %s para crear una nueva plantilla de " +"trabajo." -#: client/src/forms/Credentials.js:322 +#: client/src/forms/Credentials.js:323 msgid "Client ID" msgstr "ID del cliente" -#: client/src/notifications/notificationTemplates.form.js:262 +#: client/src/notifications/notificationTemplates.form.js:261 msgid "Client Identifier" msgstr "Identificador del cliente" -#: client/src/forms/Credentials.js:331 +#: client/src/forms/Credentials.js:332 msgid "Client Secret" msgstr "Pregunta secreta del cliente" -#: client/src/shared/form-generator.js:1711 +#: client/src/shared/form-generator.js:1720 msgid "Close" msgstr "Cerrar" @@ -553,25 +618,20 @@ msgstr "Credencial cloud" msgid "CloudForms URL" msgstr "URL CloudForms" -#: client/src/job-results/job-results.controller.js:205 -#: client/src/standard-out/standard-out.controller.js:233 -#: client/src/workflow-results/workflow-results.controller.js:136 +#: client/src/job-results/job-results.controller.js:201 +#: client/src/standard-out/standard-out.controller.js:237 +#: client/src/workflow-results/workflow-results.controller.js:139 msgid "Collapse Output" msgstr "Colapsar salida" -#: client/src/notifications/notificationTemplates.form.js:298 +#: client/src/notifications/notificationTemplates.form.js:297 msgid "Color can be one of %s." msgstr "El color puede ser solo uno de estos %s." -#: client/src/lists/CompletedJobs.js:18 -msgid "Completed Jobs" -msgstr "Trabajos terminados" - #: client/src/management-jobs/card/card.partial.html:32 msgid "Configure Notifications" msgstr "Configurar las notificaciones" -#: client/src/configuration/configuration.partial.html:10 #: client/src/setup-menu/setup-menu.partial.html:53 msgid "Configure Tower" msgstr "Configurar Tower" @@ -580,11 +640,11 @@ msgstr "Configurar Tower" msgid "Confirm Password" msgstr "Confirmar la contraseña" -#: client/src/configuration/configuration.controller.js:456 +#: client/src/configuration/configuration.controller.js:475 msgid "Confirm Reset" msgstr "Confirmar la reinicialización" -#: client/src/configuration/configuration.controller.js:465 +#: client/src/configuration/configuration.controller.js:484 msgid "Confirm factory reset" msgstr "Confirmar la reinicialización a valores de fábrica" @@ -593,8 +653,8 @@ msgstr "Confirmar la reinicialización a valores de fábrica" msgid "" "Consult the Ansible documentation for further details on the usage of tags." msgstr "" -"Consultar la documentación de Ansible para información más detallada del uso " -"de etiquetas (tags)." +"Consultar la documentación de Ansible para información más detallada del uso" +" de etiquetas (tags)." #: client/src/forms/JobTemplates.js:245 msgid "" @@ -610,10 +670,6 @@ msgstr "Copiar" msgid "Copy template" msgstr "Copiar plantilla" -#: client/src/forms/Credentials.js:18 -msgid "Create Credential" -msgstr "Crear credencial" - #: client/src/lists/Users.js:46 msgid "Create New" msgstr "Crear nuevo" @@ -635,7 +691,7 @@ msgstr "Crear un nuevo inventario" msgid "Create a new notification template" msgstr "Crear una nueva plantilla de notificación" -#: client/src/organizations/list/organizations-list.partial.html:16 +#: client/src/organizations/list/organizations-list.partial.html:21 msgid "Create a new organization" msgstr "Crear una nueva organización" @@ -682,28 +738,16 @@ msgstr "Credencial" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:123 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:57 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:24 -#: client/src/lists/Credentials.js:18 client/src/lists/Credentials.js:19 #: client/src/setup-menu/setup-menu.partial.html:22 msgid "Credentials" msgstr "Credenciales" -#: client/src/controllers/Credentials.js:348 -msgid "" -"Credentials are only shared within an organization. Assign credentials to an " -"organization to delegate credential permissions. The organization cannot be " -"edited after credentials are assigned." -msgstr "" -"Las credenciales son solo compartidas a nivel de organización. Asignar " -"credenciales a una organización para delegar permisos de credencial. La " -"organización no puede ser editar después de que las credenciales son " -"asignadas." - #: client/src/shared/directives.js:135 msgid "Current Image:" msgstr "Script personalizado" #: client/src/inventory-scripts/inventory-scripts.form.js:53 -#: client/src/inventory-scripts/inventory-scripts.form.js:63 +#: client/src/inventory-scripts/inventory-scripts.form.js:64 msgid "Custom Script" msgstr "El logo personalizado ha sido subido." @@ -711,29 +755,35 @@ msgstr "El logo personalizado ha sido subido." msgid "DASHBOARD" msgstr "PANEL DE CONTROL" -#: client/src/controllers/Credentials.js:106 -#: client/src/controllers/Credentials.js:580 -#: client/src/controllers/Projects.js:691 client/src/controllers/Users.js:104 -#: client/src/notifications/notification-templates-list/list.controller.js:189 +#: client/src/controllers/Credentials.js:104 +#: client/src/controllers/Credentials.js:590 +#: client/src/controllers/Projects.js:706 client/src/controllers/Users.js:104 +#: client/src/notifications/notification-templates-list/list.controller.js:187 #: client/src/organizations/list/organizations-list.controller.js:168 +#: client/src/partials/survey-maker-modal.html:18 msgid "DELETE" msgstr "ELIMINAR" +#: client/src/partials/survey-maker-modal.html:83 +#, fuzzy +msgid "DELETE SURVEY" +msgstr "BORRAR CUESTIONARIO" + #: client/src/job-detail/job-detail.partial.html:176 #: client/src/job-detail/job-detail.partial.html:179 msgid "DETAILS" msgstr "DETALLES" -#: client/src/controllers/Credentials.js:103 -#: client/src/controllers/Credentials.js:577 -#: client/src/controllers/Projects.js:203 -#: client/src/controllers/Projects.js:688 client/src/controllers/Users.js:101 -#: client/src/helpers/Jobs.js:165 +#: client/src/controllers/Credentials.js:101 +#: client/src/controllers/Credentials.js:587 +#: client/src/controllers/Projects.js:201 +#: client/src/controllers/Projects.js:703 client/src/controllers/Users.js:101 +#: client/src/helpers/Jobs.js:161 #: client/src/inventory-scripts/inventory-scripts.list.js:74 #: client/src/lists/Credentials.js:91 client/src/lists/Inventories.js:92 #: client/src/lists/Schedules.js:92 client/src/lists/Teams.js:77 #: client/src/lists/Templates.js:124 client/src/lists/Users.js:81 -#: client/src/notifications/notification-templates-list/list.controller.js:186 +#: client/src/notifications/notification-templates-list/list.controller.js:184 #: client/src/notifications/notificationTemplates.list.js:89 #: client/src/organizations/list/organizations-list.controller.js:165 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:13 @@ -757,7 +807,7 @@ msgstr "Eliminar el script de inventario." msgid "Delete notification" msgstr "Eliminar la notificación" -#: client/src/forms/Projects.js:161 +#: client/src/forms/Projects.js:168 msgid "Delete on Update" msgstr "Eliminar la actualización" @@ -777,18 +827,18 @@ msgstr "Eliminar la plantilla" msgid "Delete the job" msgstr "Eliminar el trabajo" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "" "Delete the local repository in its entirety prior to performing an update." msgstr "" "Eliminar el repositorio local en su totalidad antes de realizar la " "actualización." -#: client/src/lists/Projects.js:116 +#: client/src/lists/Projects.js:117 msgid "Delete the project" msgstr "Eliminar el proyecto" -#: client/src/lists/ScheduledJobs.js:82 +#: client/src/lists/ScheduledJobs.js:83 msgid "Delete the schedule" msgstr "Eliminar la planificación" @@ -796,7 +846,7 @@ msgstr "Eliminar la planificación" msgid "Delete user" msgstr "Eliminar el usuario" -#: client/src/forms/Projects.js:163 +#: client/src/forms/Projects.js:170 msgid "" "Depending on the size of the repository this may significantly increase the " "amount of time required to complete an update." @@ -804,11 +854,12 @@ msgstr "" "Dependiendo del tamaño del repositorio esto podría incrementar " "significativamente el tiempo necesario para completar una actualización." -#: client/src/forms/Credentials.js:41 client/src/forms/Inventories.js:37 -#: client/src/forms/JobTemplates.js:42 client/src/forms/Organizations.js:33 -#: client/src/forms/Projects.js:38 client/src/forms/Teams.js:34 -#: client/src/forms/Users.js:144 client/src/forms/Users.js:170 -#: client/src/forms/Workflows.js:41 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:52 +#: client/src/forms/Credentials.js:41 client/src/forms/Hosts.js:61 +#: client/src/forms/Inventories.js:37 client/src/forms/JobTemplates.js:42 +#: client/src/forms/Organizations.js:33 client/src/forms/Projects.js:38 +#: client/src/forms/Teams.js:34 client/src/forms/Users.js:144 +#: client/src/forms/Users.js:170 client/src/forms/Workflows.js:41 #: client/src/inventory-scripts/inventory-scripts.form.js:35 #: client/src/inventory-scripts/inventory-scripts.list.js:25 #: client/src/lists/Credentials.js:34 @@ -818,36 +869,36 @@ msgstr "" msgid "Description" msgstr "Descripción" -#: client/src/notifications/notificationTemplates.form.js:141 -#: client/src/notifications/notificationTemplates.form.js:146 -#: client/src/notifications/notificationTemplates.form.js:158 -#: client/src/notifications/notificationTemplates.form.js:163 -#: client/src/notifications/notificationTemplates.form.js:376 +#: client/src/notifications/notificationTemplates.form.js:140 +#: client/src/notifications/notificationTemplates.form.js:145 +#: client/src/notifications/notificationTemplates.form.js:157 +#: client/src/notifications/notificationTemplates.form.js:162 +#: client/src/notifications/notificationTemplates.form.js:375 msgid "Destination Channels" msgstr "Canales destinatarios" -#: client/src/notifications/notificationTemplates.form.js:371 +#: client/src/notifications/notificationTemplates.form.js:370 msgid "Destination Channels or Users" msgstr "Canales destinatarios o usuarios" -#: client/src/notifications/notificationTemplates.form.js:212 -#: client/src/notifications/notificationTemplates.form.js:217 +#: client/src/notifications/notificationTemplates.form.js:211 +#: client/src/notifications/notificationTemplates.form.js:216 msgid "Destination SMS Number" msgstr "Número SMS del destinatario" #: client/src/license/license.partial.html:5 -#: client/src/shared/form-generator.js:1493 +#: client/src/shared/form-generator.js:1502 msgid "Details" msgstr "Detalles" -#: client/src/configuration/auth-form/configuration-auth.controller.js:70 +#: client/src/configuration/auth-form/configuration-auth.controller.js:72 #: client/src/configuration/configuration.controller.js:181 #: client/src/configuration/configuration.controller.js:243 #: client/src/configuration/system-form/configuration-system.controller.js:49 msgid "Discard changes" msgstr "Descartar cambios" -#: client/src/forms/Teams.js:147 +#: client/src/forms/Teams.js:148 msgid "Dissasociate permission from team" msgstr "Desasociar permiso de un equipo." @@ -855,20 +906,20 @@ msgstr "Desasociar permiso de un equipo." msgid "Dissasociate permission from user" msgstr "Desasociar permiso de un usuario" -#: client/src/forms/Credentials.js:385 client/src/helpers/Credentials.js:134 +#: client/src/forms/Credentials.js:386 client/src/helpers/Credentials.js:134 #: client/src/helpers/Credentials.js:270 msgid "Domain Name" msgstr "Nombre de dominio" #: client/src/job-detail/job-detail.partial.html:420 #: client/src/job-results/job-results.controller.js:8 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:114 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:134 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:137 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:102 msgid "Download Output" msgstr "Descargar salida" -#: client/src/inventory-scripts/inventory-scripts.form.js:61 +#: client/src/inventory-scripts/inventory-scripts.form.js:62 msgid "" "Drag and drop your custom inventory script file here or create one in the " "field to import your custom inventory." @@ -876,6 +927,16 @@ msgstr "" "Arrastrar y soltar sus ficheros scripts personalizados de inventario aquí o " "crear uno en el campo para importar su inventario personalizado." +#: client/src/partials/survey-maker-modal.html:76 +#, fuzzy +msgid "Drop question here to reorder" +msgstr "Arrastre y suelte una pregunta aquí para reordenar" + +#: client/src/configuration/configuration.route.js:30 +#, fuzzy +msgid "EDIT CONFIGURATION" +msgstr "EDITAR CONFIGURACION" + #: client/src/management-jobs/scheduler/main.js:95 msgid "EDIT SCHEDULED JOB" msgstr "MODIFICAR UN TRABAJO PLANIFICADO" @@ -891,11 +952,11 @@ msgstr "TIEMPO TRANSCURRIDO" msgid "EVENT SUMMARY" msgstr "RESUMEN DEL EVENTO" -#: client/src/shared/smart-search/smart-search.partial.html:40 +#: client/src/shared/smart-search/smart-search.partial.html:39 msgid "EXAMPLES:" msgstr "EJEMPLOS:" -#: client/src/forms/Projects.js:174 +#: client/src/forms/Projects.js:181 msgid "" "Each time a job runs using this project, perform an update to the local " "repository prior to starting the job." @@ -903,7 +964,7 @@ msgstr "" "Cada vez que un trabajo se ejecuta usando este proyecto, se realizará una " "actualización al repositorio local antes de iniciar el trabajo." -#: client/src/dashboard/hosts/dashboard-hosts.list.js:62 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:63 #: client/src/inventory-scripts/inventory-scripts.list.js:57 #: client/src/lists/Credentials.js:72 client/src/lists/Inventories.js:78 #: client/src/lists/Schedules.js:77 client/src/lists/Teams.js:60 @@ -913,12 +974,8 @@ msgstr "" msgid "Edit" msgstr "Editar" -#: client/src/configuration/configuration.route.js:30 -msgid "Edit Configuration" -msgstr "Editar la configuración" - -#: client/src/forms/JobTemplates.js:482 client/src/forms/Workflows.js:180 -#: client/src/shared/form-generator.js:1723 +#: client/src/forms/JobTemplates.js:486 client/src/forms/Workflows.js:181 +#: client/src/shared/form-generator.js:1732 msgid "Edit Survey" msgstr "Editar el cuestionario" @@ -930,7 +987,7 @@ msgstr "Editar la configuración de Tower." msgid "Edit credential" msgstr "Editar credenciales" -#: client/src/dashboard/hosts/dashboard-hosts.list.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:66 msgid "Edit host" msgstr "Editar el servidor" @@ -962,11 +1019,11 @@ msgstr "Editar la plantilla" msgid "Edit the User" msgstr "Editar el usuario" -#: client/src/lists/Projects.js:103 +#: client/src/lists/Projects.js:104 msgid "Edit the project" msgstr "Editar el proyecto" -#: client/src/lists/ScheduledJobs.js:68 +#: client/src/lists/ScheduledJobs.js:69 msgid "Edit the schedule" msgstr "Editar la planificación" @@ -974,13 +1031,13 @@ msgstr "Editar la planificación" msgid "Edit user" msgstr "Editar el usuario" -#: client/src/controllers/Projects.js:238 +#: client/src/controllers/Projects.js:236 msgid "" -"Either you do not have access or the SCM update process completed. Click the " -"%sRefresh%s button to view the latest status." +"Either you do not have access or the SCM update process completed. Click the" +" %sRefresh%s button to view the latest status." msgstr "" "Usted no tiene acceso o el proceso de actualización de SCM ha sido " -"completado. Pulse sobre el botón %Actualizar% para ver el estado más " +"completado. Pulse sobre el botón %sActualizar%s para ver el estado más " "reciente." #: client/src/forms/EventsViewer.js:81 client/src/forms/LogViewerStatus.js:50 @@ -990,7 +1047,7 @@ msgstr "" msgid "Elapsed" msgstr "Tiempo transcurrido" -#: client/src/forms/Credentials.js:192 client/src/forms/Users.js:42 +#: client/src/forms/Credentials.js:193 client/src/forms/Users.js:53 msgid "Email" msgstr "Correo" @@ -1023,7 +1080,8 @@ msgstr "Fin" msgid "End User License Agreement" msgstr "Acuerdo de licencia de usuario final" -#: client/src/forms/Inventories.js:60 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:64 +#: client/src/forms/Hosts.js:71 client/src/forms/Inventories.js:61 msgid "" "Enter inventory variables using either JSON or YAML syntax. Use the radio " "button to toggle between the two." @@ -1044,8 +1102,8 @@ msgid "" "Enter the URL which corresponds to your %sRed Hat Satellite 6 server. %sFor " "example, %s" msgstr "" -"Introduzca la URL que corresponda a su servidor %sRed Hat Satellite 6. %sPor " -"ejemplo, %s" +"Introduzca la URL que corresponda a su servidor %sRed Hat Satellite 6. %sPor" +" ejemplo, %s" #: client/src/helpers/Credentials.js:129 client/src/helpers/Credentials.js:265 msgid "" @@ -1054,25 +1112,25 @@ msgstr "" "Introduzca el nombre de servidor o dirección IP que corresponda a su VMWare " "vCenter." -#: client/src/configuration/configuration.controller.js:307 -#: client/src/configuration/configuration.controller.js:385 -#: client/src/configuration/configuration.controller.js:419 -#: client/src/configuration/configuration.controller.js:438 -#: client/src/controllers/Projects.js:173 -#: client/src/controllers/Projects.js:194 -#: client/src/controllers/Projects.js:222 -#: client/src/controllers/Projects.js:243 -#: client/src/controllers/Projects.js:258 -#: client/src/controllers/Projects.js:267 -#: client/src/controllers/Projects.js:405 -#: client/src/controllers/Projects.js:599 -#: client/src/controllers/Projects.js:665 -#: client/src/controllers/Projects.js:683 client/src/controllers/Users.js:182 +#: client/src/configuration/configuration.controller.js:318 +#: client/src/configuration/configuration.controller.js:403 +#: client/src/configuration/configuration.controller.js:437 +#: client/src/configuration/configuration.controller.js:457 +#: client/src/controllers/Projects.js:171 +#: client/src/controllers/Projects.js:192 +#: client/src/controllers/Projects.js:220 +#: client/src/controllers/Projects.js:241 +#: client/src/controllers/Projects.js:256 +#: client/src/controllers/Projects.js:265 +#: client/src/controllers/Projects.js:403 +#: client/src/controllers/Projects.js:614 +#: client/src/controllers/Projects.js:680 +#: client/src/controllers/Projects.js:698 client/src/controllers/Users.js:182 #: client/src/controllers/Users.js:271 client/src/controllers/Users.js:339 #: client/src/controllers/Users.js:94 client/src/helpers/Credentials.js:418 #: client/src/helpers/Credentials.js:434 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:168 -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:187 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:172 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:191 #: client/src/login/loginModal/thirdPartySignOn/thirdPartySignOn.service.js:119 #: client/src/management-jobs/card/card.controller.js:150 #: client/src/management-jobs/card/card.controller.js:240 @@ -1089,7 +1147,7 @@ msgstr "¡Error!" msgid "Event" msgstr "Evento" -#: client/src/widgets/Stream.js:216 +#: client/src/widgets/Stream.js:222 msgid "Event summary not available" msgstr "Resumen del evento no disponible." @@ -1098,25 +1156,25 @@ msgid "Events" msgstr "Eventos" #: client/src/controllers/Projects.js:423 -#: client/src/controllers/Projects.js:706 +#: client/src/controllers/Projects.js:723 msgid "Example URLs for GIT SCM include:" -msgstr "Ejemplos de URLs para SCM GIT :" +msgstr "Ejemplos de URLs para SCM GIT :" -#: client/src/controllers/Projects.js:436 -#: client/src/controllers/Projects.js:718 +#: client/src/controllers/Projects.js:438 +#: client/src/controllers/Projects.js:737 msgid "Example URLs for Mercurial SCM include:" -msgstr "Ejemplos de URLs para SCM Mercurial :" +msgstr "Ejemplos de URLs para SCM Mercurial :" -#: client/src/controllers/Projects.js:431 -#: client/src/controllers/Projects.js:713 +#: client/src/controllers/Projects.js:432 +#: client/src/controllers/Projects.js:731 msgid "Example URLs for Subversion SCM include:" -msgstr "Ejemplos de URLs para SCM Subversion :" +msgstr "Ejemplos de URLs para SCM Subversion :" #: client/src/job-results/job-results.controller.js:11 -#: client/src/job-results/job-results.controller.js:207 -#: client/src/standard-out/standard-out.controller.js:235 +#: client/src/job-results/job-results.controller.js:203 +#: client/src/standard-out/standard-out.controller.js:239 #: client/src/standard-out/standard-out.controller.js:25 -#: client/src/workflow-results/workflow-results.controller.js:138 +#: client/src/workflow-results/workflow-results.controller.js:141 #: client/src/workflow-results/workflow-results.controller.js:97 msgid "Expand Output" msgstr "Extender salida" @@ -1129,18 +1187,31 @@ msgstr "Fecha de expiración el" msgid "Explanation" msgstr "Explicación" -#: client/src/forms/JobTemplates.js:367 client/src/forms/JobTemplates.js:379 -#: client/src/forms/Workflows.js:72 client/src/forms/Workflows.js:84 +#: client/src/forms/JobTemplates.js:371 client/src/forms/JobTemplates.js:383 +#: client/src/forms/Workflows.js:73 client/src/forms/Workflows.js:85 +#: client/src/inventories/manage/adhoc/adhoc.form.js:125 +#: client/src/inventories/manage/adhoc/adhoc.form.js:137 #: client/src/job-detail/job-detail.partial.html:163 #: client/src/partials/logviewer.html:8 msgid "Extra Variables" msgstr "Variables adicionales" +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:104 +#, fuzzy +msgid "" +"Extra Variables\n" +" \n" +" " +msgstr "" +"Variables Adicionales\n" +" \n" +" " + #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:67 msgid "FAILED" msgstr "FALLIDO" -#: client/src/shared/smart-search/smart-search.partial.html:48 +#: client/src/shared/smart-search/smart-search.partial.html:45 msgid "FIELDS:" msgstr "CAMPOS:" @@ -1167,9 +1238,9 @@ msgstr "Ha fallado la creación de nuevo usuario. POST ha devuelto el estado:" #: client/src/helpers/Credentials.js:419 msgid "Failed to create new Credential. POST status:" -msgstr "Ha fallado la creación de un nuevo Credencial. Estado POST :" +msgstr "Ha fallado la creación de un nuevo Credencial. Estado POST :" -#: client/src/controllers/Projects.js:406 +#: client/src/controllers/Projects.js:404 msgid "Failed to create new project. POST returned status:" msgstr "" "Ha fallado la creación de un nuevo proyecto. POST ha devuelto el estado:" @@ -1180,36 +1251,36 @@ msgstr "" "Ha fallado la obtención de tipos de autenticación de terceros. Estado " "devuelto:" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:188 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:192 msgid "Failed to retrieve job template extra variables." msgstr "" "Ha fallado la obtención de variables adicionales para la plantilla de tarea." -#: client/src/controllers/Projects.js:600 +#: client/src/controllers/Projects.js:615 msgid "Failed to retrieve project: %s. GET status:" -msgstr "Ha fallado la obtención del proyecto: %s. Estado GET :" +msgstr "Ha fallado la obtención del proyecto: %s. Estado GET :" #: client/src/controllers/Users.js:272 client/src/controllers/Users.js:340 msgid "Failed to retrieve user: %s. GET status:" -msgstr "Ha fallado la obtención del usuario: %s. Estado GET :" +msgstr "Ha fallado la obtención del usuario: %s. Estado GET :" -#: client/src/configuration/configuration.controller.js:386 +#: client/src/configuration/configuration.controller.js:404 msgid "Failed to save settings. Returned status:" msgstr "Ha fallado guardar los ajustes. Estado devuelto:" -#: client/src/configuration/configuration.controller.js:420 +#: client/src/configuration/configuration.controller.js:438 msgid "Failed to save toggle settings. Returned status:" msgstr "Ha fallado el guardado de los ajustes cambiados. Estado devuelto:" #: client/src/helpers/Credentials.js:435 msgid "Failed to update Credential. PUT status:" -msgstr "Ha fallado la actualización de Credencial. Estado PUT :" +msgstr "Ha fallado la actualización de Credencial. Estado PUT :" -#: client/src/controllers/Projects.js:665 +#: client/src/controllers/Projects.js:680 msgid "Failed to update project: %s. PUT status:" -msgstr "Ha fallado la actualización del proyecto: %s. Estado PUT :" +msgstr "Ha fallado la actualización del proyecto: %s. Estado PUT :" -#: client/src/job-submission/job-submission-factories/launchjob.factory.js:169 +#: client/src/job-submission/job-submission-factories/launchjob.factory.js:173 #: client/src/management-jobs/card/card.controller.js:151 #: client/src/management-jobs/card/card.controller.js:241 msgid "Failed updating job %s with variables. POST returned: %d" @@ -1245,28 +1316,36 @@ msgstr "Nombre" msgid "First Run" msgstr "Primera ejecución" -#: client/src/shared/smart-search/smart-search.partial.html:54 +#: client/src/shared/smart-search/smart-search.partial.html:51 +#, fuzzy msgid "" "For additional information on advanced search search syntax please see the " -"Ansible Tower documentation." +"Ansible Tower " +"documentation." msgstr "" "Para obtener información adicional sobre la sintaxis de búsqueda avanzada, " -"por favor lea la documentación de Ansible Tower." +"por favor lea la documentación de Ansible Tower " +"documentación." #: client/src/helpers/Credentials.js:143 client/src/helpers/Credentials.js:279 msgid "For example, %s" msgstr "Por ejemplo, %s" #: client/src/notifications/notificationTemplates.form.js:101 -#: client/src/notifications/notificationTemplates.form.js:145 -#: client/src/notifications/notificationTemplates.form.js:162 -#: client/src/notifications/notificationTemplates.form.js:216 -#: client/src/notifications/notificationTemplates.form.js:337 -#: client/src/notifications/notificationTemplates.form.js:375 +#: client/src/notifications/notificationTemplates.form.js:144 +#: client/src/notifications/notificationTemplates.form.js:161 +#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:374 msgid "For example:" msgstr "Por ejemplo:" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:25 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:34 msgid "" "For hosts that are part of an external inventory, this flag cannot be " "changed. It will be set by the inventory sync process." @@ -1277,11 +1356,11 @@ msgstr "" #: client/src/forms/JobTemplates.js:227 client/src/forms/WorkflowMaker.js:125 msgid "" -"For more information and examples see %sthe Patterns topic at docs.ansible." -"com%s." +"For more information and examples see %sthe Patterns topic at " +"docs.ansible.com%s." msgstr "" -"Para más información y ejemplos, observe el tema llamado %sPatterns en docs." -"ansible.com%s." +"Para más información y ejemplos, observe el tema llamado %sPatterns en " +"docs.ansible.com%s." #: client/src/forms/JobTemplates.js:203 client/src/forms/JobTemplates.js:216 #: client/src/job-detail/job-detail.partial.html:138 @@ -1297,23 +1376,23 @@ msgstr "Información sobre la frecuencia" msgid "GROUP" msgstr "GRUPO" -#: client/src/configuration/auth-form/configuration-auth.controller.js:102 +#: client/src/configuration/auth-form/configuration-auth.controller.js:104 msgid "GitHub" msgstr "GitHub" -#: client/src/configuration/auth-form/configuration-auth.controller.js:103 +#: client/src/configuration/auth-form/configuration-auth.controller.js:105 msgid "GitHub Org" msgstr "GitHub Org" -#: client/src/configuration/auth-form/configuration-auth.controller.js:104 +#: client/src/configuration/auth-form/configuration-auth.controller.js:106 msgid "GitHub Team" msgstr "Equipo GitHub" -#: client/src/configuration/auth-form/configuration-auth.controller.js:105 +#: client/src/configuration/auth-form/configuration-auth.controller.js:107 msgid "Google OAuth2" msgstr "Google OAuth2" -#: client/src/forms/Teams.js:156 client/src/forms/Users.js:213 +#: client/src/forms/Teams.js:157 client/src/forms/Users.js:213 msgid "Grant Permission" msgstr "Conceder permiso" @@ -1325,12 +1404,14 @@ msgstr "" "Agrupar todo su contenido para administrar permisos a través de los " "diferentes departamentos en su compañía." +#: client/src/dashboard/hosts/dashboard-hosts.list.js:13 +#: client/src/dashboard/hosts/dashboard-hosts.list.js:14 #: client/src/dashboard/hosts/main.js:55 #: client/src/helpers/ActivityStream.js:53 msgid "HOSTS" msgstr "SERVIDORES" -#: client/src/notifications/notificationTemplates.form.js:327 +#: client/src/notifications/notificationTemplates.form.js:326 msgid "HTTP Headers" msgstr "Cabeceras HTTP" @@ -1338,9 +1419,9 @@ msgstr "Cabeceras HTTP" msgid "Hide Activity Stream" msgstr "Ocultar flujo de actividad" -#: client/src/forms/Credentials.js:140 client/src/forms/EventsViewer.js:20 +#: client/src/forms/Credentials.js:141 client/src/forms/EventsViewer.js:20 #: client/src/lists/JobEvents.js:73 -#: client/src/notifications/notificationTemplates.form.js:75 +#: client/src/notifications/notificationTemplates.form.js:86 msgid "Host" msgstr "Servidor" @@ -1352,10 +1433,19 @@ msgstr "Servidor (URL de autenticación)" msgid "Host Config Key" msgstr "Clave de configuración del servidor" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:29 #: client/src/dashboard/hosts/dashboard-hosts.list.js:54 +#: client/src/forms/Hosts.js:38 msgid "Host Enabled" msgstr "Servidor habilitado" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:35 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:47 +#: client/src/forms/Hosts.js:44 client/src/forms/Hosts.js:55 +#, fuzzy +msgid "Host Name" +msgstr "Nombre de Host" + #: client/src/job-detail/job-detail.partial.html:269 msgid "Host Status" msgstr "Estado del servidor" @@ -1364,6 +1454,12 @@ msgstr "Estado del servidor" msgid "Host Summary" msgstr "Resumen del servidor" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:60 +#: client/src/forms/Hosts.js:78 +#, fuzzy +msgid "Host Variables" +msgstr "Variables de Host" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:25 #: client/src/dashboard/counts/dashboard-counts.directive.js:39 #: client/src/job-detail/job-detail.partial.html:349 @@ -1394,7 +1490,9 @@ msgstr "ID" msgid "INITIATED BY" msgstr "INICIALIZADO POR" -#: client/src/helpers/ActivityStream.js:26 client/src/inventories/main.js:298 +#: client/src/helpers/ActivityStream.js:26 client/src/inventories/main.js:301 +#: client/src/inventories/main.js:51 client/src/lists/Inventories.js:16 +#: client/src/lists/Inventories.js:17 #: client/src/main-menu/main-menu.partial.html:104 #: client/src/main-menu/main-menu.partial.html:27 #: client/src/organizations/linkout/organizations-linkout.route.js:143 @@ -1406,15 +1504,16 @@ msgid "INVENTORY SCRIPT" msgstr "SCRIPT DE INVENTARIO" #: client/src/helpers/ActivityStream.js:47 +#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/inventory-scripts/main.js:66 msgid "INVENTORY SCRIPTS" msgstr "SCRIPTS DE INVENTARIO" -#: client/src/notifications/notificationTemplates.form.js:360 +#: client/src/notifications/notificationTemplates.form.js:359 msgid "IRC Nick" msgstr "Alias en IRC" -#: client/src/notifications/notificationTemplates.form.js:349 +#: client/src/notifications/notificationTemplates.form.js:348 msgid "IRC Server Address" msgstr "Dirección del servidor IRC" @@ -1431,7 +1530,10 @@ msgid "" "ITEMS \n" " {{dataRange}}\n" " of {{dataCount()}}" -msgstr "ELEMENTO " +msgstr "" +"ITEMS \n" +" {{dataRange}}\n" +" of {{dataCount()}}" #: client/src/login/authenticationServices/timer.factory.js:157 msgid "Idle Session" @@ -1439,8 +1541,8 @@ msgstr "Sesión inactiva" #: client/src/forms/JobTemplates.js:295 msgid "" -"If enabled, run this playbook as an administrator. This is the equivalent of " -"passing the %s option to the %s command." +"If enabled, run this playbook as an administrator. This is the equivalent of" +" passing the %s option to the %s command." msgstr "" "Si se habilita esta opción, ejecuta este playbook como administrador. Esto " "es equivalente a pasar la opción %s al comando %s." @@ -1461,17 +1563,19 @@ msgstr "" "Si no se especifica ninguna organización, el credencial puede ser sólo " "utilizado por el usuario que ha creado dicho credencial. Administradores de " "organización y administradores de sistema pueden asignar una organización " -"para que los roles puedan permitir que los credenciales puedan ser asignados " -"a usuarios y equipos en esa organización" +"para que los roles puedan permitir que los credenciales puedan ser asignados" +" a usuarios y equipos en esa organización" #: client/src/license/license.partial.html:70 msgid "" "If you are ready to upgrade, please contact us by clicking the button below" msgstr "" -"Si usted está listo para la actualización, por favor contáctenos pulsando el " -"siguiente botón" +"Si usted está listo para la actualización, por favor contáctenos pulsando el" +" siguiente botón" +#: client/src/dashboard/hosts/dashboard-hosts.form.js:23 #: client/src/dashboard/hosts/dashboard-hosts.list.js:53 +#: client/src/forms/Hosts.js:32 msgid "" "Indicates if a host is available and should be included in running jobs." msgstr "" @@ -1487,15 +1591,15 @@ msgid "" "Instead, %s will check playbook syntax, test environment setup and report " "problems." msgstr "" -"En vez, %s comprobará el playbook, la sintaxis, configuración del entorno de " -"pruebas e informará de problemas." +"En vez, %s comprobará el playbook, la sintaxis, configuración del entorno de" +" pruebas e informará de problemas." #: client/src/license/license.partial.html:11 msgid "Invalid License" msgstr "Licencia no valida" -#: client/src/license/license.controller.js:69 -#: client/src/license/license.controller.js:76 +#: client/src/license/license.controller.js:70 +#: client/src/license/license.controller.js:77 msgid "Invalid file format. Please upload valid JSON." msgstr "Formato de fichero inválido. Por favor cargue un JSON válido." @@ -1507,7 +1611,6 @@ msgstr "Nombre de usuario o contraseña inválido. Por favor intente de nuevo." #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:51 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:26 #: client/src/dashboard/counts/dashboard-counts.directive.js:50 -#: client/src/lists/Inventories.js:16 client/src/lists/Inventories.js:17 msgid "Inventories" msgstr "Inventarios" @@ -1520,7 +1623,6 @@ msgid "Inventory" msgstr "Inventario" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:27 -#: client/src/inventory-scripts/inventory-scripts.list.js:12 #: client/src/setup-menu/setup-menu.partial.html:34 msgid "Inventory Scripts" msgstr "Scripts de inventario" @@ -1533,7 +1635,7 @@ msgstr "Sincronización de inventario" msgid "Inventory Sync Failures" msgstr "Errores de sincronización de inventario" -#: client/src/forms/Inventories.js:67 +#: client/src/forms/Inventories.js:68 msgid "Inventory Variables" msgstr "Variables de inventario" @@ -1542,6 +1644,11 @@ msgstr "Variables de inventario" msgid "Item" msgstr "Elemento" +#: client/src/lists/JobEvents.js:15 +#, fuzzy +msgid "JOB EVENTS" +msgstr "EVENTOS DE TRABAJO" + #: client/src/dashboard/graphs/dashboard-graphs.partial.html:4 msgid "JOB STATUS" msgstr "ESTADO DEL TRABAJO" @@ -1550,21 +1657,20 @@ msgstr "ESTADO DEL TRABAJO" msgid "JOB TEMPLATE" msgstr "PLANTILLA DE TRABAJO" -#: client/src/organizations/linkout/organizations-linkout.route.js:252 +#: client/src/lists/PortalJobTemplates.js:15 +#: client/src/lists/PortalJobTemplates.js:16 +#: client/src/organizations/linkout/organizations-linkout.route.js:254 msgid "JOB TEMPLATES" msgstr "PLANTILLAS DE TRABAJO" #: client/src/dashboard/graphs/job-status/job-status-graph.directive.js:113 #: client/src/helpers/ActivityStream.js:44 client/src/jobs/jobs.route.js:15 +#: client/src/lists/PortalJobs.js:15 client/src/lists/PortalJobs.js:19 #: client/src/main-menu/main-menu.partial.html:122 #: client/src/main-menu/main-menu.partial.html:43 msgid "JOBS" msgstr "TRABAJOS" -#: client/src/lists/JobEvents.js:15 -msgid "Job Events" -msgstr "Eventos de trabajo" - #: client/src/forms/JobTemplates.js:252 client/src/forms/JobTemplates.js:260 #: client/src/forms/WorkflowMaker.js:134 client/src/forms/WorkflowMaker.js:142 #: client/src/job-detail/job-detail.partial.html:153 @@ -1577,9 +1683,7 @@ msgstr "Plantilla de trabajo" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:35 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:97 -#: client/src/lists/PortalJobTemplates.js:15 -#: client/src/lists/PortalJobTemplates.js:16 -#: client/src/organizations/linkout/organizations-linkout.route.js:264 +#: client/src/organizations/linkout/organizations-linkout.route.js:266 msgid "Job Templates" msgstr "Plantillas de trabajo" @@ -1592,11 +1696,11 @@ msgstr "Tipo de trabajo" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:28 #: client/src/configuration/configuration.partial.html:16 -#: client/src/jobs/jobs.partial.html:7 client/src/lists/PortalJobs.js:15 -#: client/src/lists/PortalJobs.js:19 +#: client/src/jobs/jobs.partial.html:7 msgid "Jobs" msgstr "Trabajos" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:63 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:90 #: client/src/shared/smart-search/smart-search.partial.html:14 msgid "Key" @@ -1607,7 +1711,7 @@ msgstr "Clave" msgid "LAUNCH TYPE" msgstr "TIPO DE EJECUCIÓN" -#: client/src/configuration/auth-form/configuration-auth.controller.js:106 +#: client/src/configuration/auth-form/configuration-auth.controller.js:108 msgid "LDAP" msgstr "LDAP" @@ -1623,12 +1727,8 @@ msgstr "ERROR DE LICENCIA" msgid "LOG OUT" msgstr "DESCONECTARSE" -#: client/src/notifications/notificationTemplates.form.js:273 -msgid "Label to be shown with notification" -msgstr "Etiqueta a ser mostrada con la notificación" - -#: client/src/forms/JobTemplates.js:355 client/src/forms/JobTemplates.js:360 -#: client/src/forms/Workflows.js:60 client/src/forms/Workflows.js:65 +#: client/src/forms/JobTemplates.js:359 client/src/forms/JobTemplates.js:364 +#: client/src/forms/Workflows.js:61 client/src/forms/Workflows.js:66 #: client/src/lists/AllJobs.js:76 client/src/lists/Templates.js:47 msgid "Labels" msgstr "Etiquetas" @@ -1643,7 +1743,7 @@ msgid "Last Updated" msgstr "Última actualización" #: client/src/lists/PortalJobTemplates.js:39 client/src/lists/Templates.js:84 -#: client/src/shared/form-generator.js:1715 +#: client/src/shared/form-generator.js:1724 msgid "Launch" msgstr "Ejecutar" @@ -1711,7 +1811,7 @@ msgstr "Eventos en directo: error conectando al servidor Tower." #: client/src/job-detail/job-detail.partial.html:316 #: client/src/job-detail/job-detail.partial.html:371 -#: client/src/shared/form-generator.js:1991 +#: client/src/shared/form-generator.js:2002 msgid "Loading..." msgstr "Cargando..." @@ -1727,6 +1827,7 @@ msgstr "Desconectarse" msgid "Logging" msgstr "Iniciando sesión" +#: client/src/management-jobs/card/card.partial.html:4 #: client/src/management-jobs/card/card.route.js:21 msgid "MANAGEMENT JOBS" msgstr "TAREAS DE GESTIÓN" @@ -1735,7 +1836,7 @@ msgstr "TAREAS DE GESTIÓN" msgid "MY VIEW" msgstr "MI VISTA" -#: client/src/forms/Credentials.js:68 +#: client/src/forms/Credentials.js:69 msgid "Machine" msgstr "Máquina" @@ -1757,17 +1858,16 @@ msgstr "" msgid "Management Certificate" msgstr "Certificado de gestión" -#: client/src/management-jobs/card/card.partial.html:4 #: client/src/setup-menu/setup-menu.partial.html:28 msgid "Management Jobs" msgstr "Trabajos de gestión" -#: client/src/controllers/Projects.js:93 +#: client/src/controllers/Projects.js:91 msgid "Manual projects do not require a schedule" msgstr "Los proyectos manuales no necesitan de una planificación." -#: client/src/controllers/Projects.js:589 -#: client/src/controllers/Projects.js:92 +#: client/src/controllers/Projects.js:599 +#: client/src/controllers/Projects.js:90 msgid "Manual projects do not require an SCM update" msgstr "Los proyectos manuales no necesitan una actualización del SCM" @@ -1811,6 +1911,51 @@ msgstr "Mi vista" msgid "NAME" msgstr "NOMBRE" +#: client/src/inventory-scripts/inventory-scripts.form.js:16 +#, fuzzy +msgid "NEW CUSTOM INVENTORY" +msgstr "NUEVO INVENTARIO PERSONALIZADO" + +#: client/src/forms/Inventories.js:18 +#, fuzzy +msgid "NEW INVENTORY" +msgstr "NUEVO INVENTARIO" + +#: client/src/forms/JobTemplates.js:20 +#, fuzzy +msgid "NEW JOB TEMPLATE" +msgstr "NEVA PLANTILLA DE TRABAJO" + +#: client/src/notifications/notificationTemplates.form.js:16 +#, fuzzy +msgid "NEW NOTIFICATION TEMPLATE" +msgstr "NUEVA PLANTILLA DE NOTIFICACION" + +#: client/src/forms/Organizations.js:18 +#, fuzzy +msgid "NEW ORGANIZATION" +msgstr "NUEVA ORGANIZACION" + +#: client/src/forms/Projects.js:18 +#, fuzzy +msgid "NEW PROJECT" +msgstr "NUEVO PROYECTO" + +#: client/src/forms/Teams.js:18 +#, fuzzy +msgid "NEW TEAM" +msgstr "NUEVO EQUIPO" + +#: client/src/forms/Users.js:18 +#, fuzzy +msgid "NEW USER" +msgstr "NUEVO USUARIO" + +#: client/src/forms/Workflows.js:19 +#, fuzzy +msgid "NEW WORKFLOW JOB TEMPLATE" +msgstr "NUEVA PLANTILLA DE FLUJO DE TRABAJO" + #: client/src/dashboard/hosts/dashboard-hosts.list.js:18 msgid "NO HOSTS FOUND" msgstr "NINGÚN SERVIDOR ENCONTRADO" @@ -1824,6 +1969,7 @@ msgid "NOTIFICATION TEMPLATE" msgstr "PLANTILLA DE NOTIFICACIÓN" #: client/src/helpers/ActivityStream.js:38 +#: client/src/notifications/notificationTemplates.list.js:14 msgid "NOTIFICATION TEMPLATES" msgstr "PLANTILLAS DE NOTIFICACIÓN" @@ -1832,12 +1978,13 @@ msgstr "PLANTILLAS DE NOTIFICACIÓN" msgid "NOTIFICATIONS" msgstr "NOTIFICACIONES" +#: client/src/dashboard/hosts/dashboard-hosts.list.js:36 #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:14 #: client/src/dashboard/lists/jobs/jobs-list.partial.html:13 #: client/src/forms/Credentials.js:34 client/src/forms/Inventories.js:29 #: client/src/forms/JobTemplates.js:35 client/src/forms/LogViewerStatus.js:23 #: client/src/forms/Organizations.js:26 client/src/forms/Projects.js:31 -#: client/src/forms/Teams.js:125 client/src/forms/Teams.js:27 +#: client/src/forms/Teams.js:126 client/src/forms/Teams.js:27 #: client/src/forms/Users.js:141 client/src/forms/Users.js:167 #: client/src/forms/Users.js:193 client/src/forms/Workflows.js:34 #: client/src/inventory-scripts/inventory-scripts.form.js:28 @@ -1856,7 +2003,7 @@ msgstr "NOTIFICACIONES" msgid "Name" msgstr "Nombre" -#: client/src/forms/Credentials.js:72 +#: client/src/forms/Credentials.js:73 msgid "Network" msgstr "Red" @@ -1867,53 +2014,17 @@ msgstr "Credenciales de Red" #: client/src/forms/JobTemplates.js:196 msgid "" -"Network credentials are used by Ansible networking modules to connect to and " -"manage networking devices." +"Network credentials are used by Ansible networking modules to connect to and" +" manage networking devices." msgstr "" "Las credenciales de Red son utilizadas por los módulos de red de Ansible " "para conectar y administrar dispositivos de red." -#: client/src/inventory-scripts/inventory-scripts.form.js:16 -msgid "New Custom Inventory" -msgstr "Nuevo nombre del inventario personalizado" - -#: client/src/forms/Inventories.js:18 -msgid "New Inventory" -msgstr "Nuevo inventario" - -#: client/src/forms/JobTemplates.js:20 -msgid "New Job Template" -msgstr "Nueva plantilla de trabajo" - -#: client/src/notifications/notificationTemplates.form.js:16 -msgid "New Notification Template" -msgstr "Nueva plantilla de notificación" - -#: client/src/forms/Organizations.js:18 -msgid "New Organization" -msgstr "Nueva organización" - -#: client/src/forms/Projects.js:18 -msgid "New Project" -msgstr "Nuevo proyecto" - -#: client/src/forms/Teams.js:18 -msgid "New Team" -msgstr "Nuevo equipo" - -#: client/src/forms/Users.js:18 -msgid "New User" -msgstr "Nuevo usuario" - -#: client/src/forms/Workflows.js:19 -msgid "New Workflow Job Template" -msgstr "Nueva plantilla de flujo de trabajo" - #: client/src/controllers/Users.js:174 msgid "New user successfully created!" msgstr "¡Nuevo usuario creado correctamente!" -#: client/src/lists/ScheduledJobs.js:52 client/src/lists/Schedules.js:45 +#: client/src/lists/ScheduledJobs.js:53 client/src/lists/Schedules.js:45 msgid "Next Run" msgstr "Siguiente ejecución" @@ -1921,7 +2032,7 @@ msgstr "Siguiente ejecución" msgid "No Credentials Have Been Created" msgstr "Ningún credencial ha sido creado" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "No SCM Configuration" msgstr "Ninguna configuración SCM" @@ -1933,7 +2044,7 @@ msgstr "Ninguna actualización SCM ha sido ejecutada para este proyecto" msgid "No Teams exist" msgstr "No existe ningún equipo" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "No Updates Available" msgstr "No existen actualizaciones disponibles" @@ -1973,15 +2084,15 @@ msgstr "Ningún servidor encontrado." msgid "No matching tasks" msgstr "Ninguna tarea encontrada" -#: client/src/forms/Teams.js:122 client/src/forms/Users.js:190 +#: client/src/forms/Teams.js:123 client/src/forms/Users.js:190 msgid "No permissions have been granted" msgstr "Ningún permiso concedido" -#: client/src/notifications/notification-templates-list/list.controller.js:88 +#: client/src/notifications/notification-templates-list/list.controller.js:86 msgid "No recent notifications." msgstr "No hay notificaciones recientes" -#: client/src/shared/form-generator.js:1885 +#: client/src/shared/form-generator.js:1896 msgid "No records matched your search." msgstr "No existe registros que coincidan con su búsqueda." @@ -1993,20 +2104,24 @@ msgstr "No existen planificaciones" msgid "Normal User" msgstr "Usuario normal" -#: client/src/controllers/Projects.js:95 +#: client/src/controllers/Projects.js:93 msgid "Not configured for SCM" msgstr "No configurado para SCM" -#: client/src/notifications/notificationTemplates.form.js:296 +#: client/src/notifications/notificationTemplates.form.js:295 msgid "Notification Color" msgstr "Color de notificación" -#: client/src/notifications/notification-templates-list/list.controller.js:115 +#: client/src/notifications/notification-templates-list/list.controller.js:113 msgid "Notification Failed." msgstr "Notificación fallida" +#: client/src/notifications/notificationTemplates.form.js:284 +#, fuzzy +msgid "Notification Label" +msgstr "Etiqueta de Notificación" + #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:29 -#: client/src/notifications/notificationTemplates.list.js:14 msgid "Notification Templates" msgstr "Plantillas de notificación" @@ -2016,19 +2131,23 @@ msgstr "Plantillas de notificación" msgid "Notifications" msgstr "Notificación" -#: client/src/notifications/notificationTemplates.form.js:309 +#: client/src/notifications/notificationTemplates.form.js:308 msgid "Notify Channel" msgstr "Notificar canal" -#: client/src/notifications/notificationTemplates.form.js:201 +#: client/src/notifications/notificationTemplates.form.js:200 msgid "Number associated with the \"Messaging Service\" in Twilio." msgstr "Número asociado con el \"Servicio de mensaje\" en Twilio.T" -#: client/src/shared/form-generator.js:552 +#: client/src/partials/survey-maker-modal.html:27 +#: client/src/shared/form-generator.js:553 +#: client/src/shared/generator-helpers.js:525 msgid "OFF" msgstr "OFF" -#: client/src/shared/form-generator.js:550 +#: client/src/partials/survey-maker-modal.html:26 +#: client/src/shared/form-generator.js:551 +#: client/src/shared/generator-helpers.js:521 msgid "ON" msgstr "ON" @@ -2054,7 +2173,7 @@ msgstr "En caso de error" msgid "On Success" msgstr "En caso de éxito" -#: client/src/forms/Credentials.js:380 +#: client/src/forms/Credentials.js:381 msgid "" "OpenStack domains define administrative boundaries. It is only needed for " "Keystone v3 authentication URLs. Common scenarios include:" @@ -2063,18 +2182,18 @@ msgstr "" "necesario para las direcciones URLs en el uso de autentificación para " "KeyStone v3. Los escenarios más habituales:" -#: client/src/forms/JobTemplates.js:362 client/src/forms/Workflows.js:67 +#: client/src/forms/JobTemplates.js:366 client/src/forms/Workflows.js:68 msgid "" "Optional labels that describe this job template, such as 'dev' or 'test'. " "Labels can be used to group and filter job templates and completed jobs in " "the Tower display." msgstr "" -"Etiquetas opcionales que describen esta plantilla de trabajo, como puede ser " -"'dev' o 'test'. Las etiquetas pueden ser utilizadas para agrupar o filtrar " +"Etiquetas opcionales que describen esta plantilla de trabajo, como puede ser" +" 'dev' o 'test'. Las etiquetas pueden ser utilizadas para agrupar o filtrar " "plantillas de trabajo y trabajos completados en la vista en Tower." #: client/src/forms/JobTemplates.js:288 -#: client/src/notifications/notificationTemplates.form.js:395 +#: client/src/notifications/notificationTemplates.form.js:394 #: client/src/partials/logviewer.html:7 msgid "Options" msgstr "Opciones" @@ -2082,7 +2201,7 @@ msgstr "Opciones" #: client/src/forms/Credentials.js:48 client/src/forms/Credentials.js:55 #: client/src/forms/Inventories.js:42 client/src/forms/Projects.js:43 #: client/src/forms/Projects.js:49 client/src/forms/Teams.js:39 -#: client/src/forms/Users.js:59 client/src/forms/Workflows.js:47 +#: client/src/forms/Users.js:42 client/src/forms/Workflows.js:47 #: client/src/forms/Workflows.js:53 #: client/src/inventory-scripts/inventory-scripts.form.js:40 #: client/src/inventory-scripts/inventory-scripts.list.js:30 @@ -2097,7 +2216,7 @@ msgstr "Organización" msgid "Organizations" msgstr "Organizaciones" -#: client/src/forms/Credentials.js:80 +#: client/src/forms/Credentials.js:81 msgid "Others (Cloud Providers)" msgstr "Otros (Proveedores Cloud)" @@ -2109,9 +2228,14 @@ msgstr "Propietarios" msgid "PASSWORD" msgstr "CONTRASEÑA" -#: client/src/organizations/list/organizations-list.partial.html:45 -#: client/src/shared/form-generator.js:1891 -#: client/src/shared/list-generator/list-generator.factory.js:246 +#: client/src/partials/survey-maker-modal.html:45 +#, fuzzy +msgid "PLEASE ADD A SURVEY PROMPT ON THE LEFT." +msgstr "POR FAVOR AGREGUE UN AVISO DE CUESTIONARIO A LA IZQUIERDA." + +#: client/src/organizations/list/organizations-list.partial.html:48 +#: client/src/shared/form-generator.js:1902 +#: client/src/shared/list-generator/list-generator.factory.js:242 msgid "PLEASE ADD ITEMS TO THIS LIST" msgstr "Por favor añada elementos a la lista" @@ -2119,11 +2243,17 @@ msgstr "Por favor añada elementos a la lista" msgid "PORTAL MODE" msgstr "MODO PORTAL" +#: client/src/partials/survey-maker-modal.html:43 +#, fuzzy +msgid "PREVIEW" +msgstr "VISTA PREVIA" + #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:73 msgid "PROJECT" msgstr "PROYECTO" #: client/src/app.js:296 client/src/helpers/ActivityStream.js:23 +#: client/src/lists/Projects.js:16 client/src/lists/Projects.js:17 #: client/src/main-menu/main-menu.partial.html:19 #: client/src/main-menu/main-menu.partial.html:95 #: client/src/organizations/linkout/organizations-linkout.route.js:194 @@ -2135,23 +2265,36 @@ msgid "" "Page\n" " {{current}} of\n" " {{last}}" -msgstr "Págin" +msgstr "" +"Page\n" +" {{current}} de\n" +" {{last}}" -#: client/src/notifications/notificationTemplates.form.js:240 +#: client/src/notifications/notificationTemplates.form.js:239 msgid "Pagerduty subdomain" msgstr "Subdominio Pagerduty" -#: client/src/forms/JobTemplates.js:373 client/src/forms/Workflows.js:78 +#: client/src/forms/JobTemplates.js:377 client/src/forms/Workflows.js:79 msgid "" "Pass extra command line variables to the playbook. This is the %s or %s " "command line parameter for %s. Provide key/value pairs using either YAML or " "JSON." msgstr "" "Transmitir variables adicionales en la línea de comandos a los playbook. " -"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja " -"de clave/valor utilizando la sintaxis YAML o JSON." +"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja" +" de clave/valor utilizando la sintaxis YAML o JSON." -#: client/src/forms/Credentials.js:227 client/src/forms/Users.js:70 +#: client/src/inventories/manage/adhoc/adhoc.form.js:131 +#, fuzzy +msgid "" +"Pass extra command line variables. This is the %s or %s command line " +"parameter for %s. Provide key/value pairs using either YAML or JSON." +msgstr "" +"Transmitir variables adicionales en la línea de comandos a los playbook. " +"Este es el parámetro de línea de comandos %s o %s para %s. Introduzca pareja" +" de clave/valor utilizando la sintaxis YAML o JSON." + +#: client/src/forms/Credentials.js:228 client/src/forms/Users.js:70 #: client/src/helpers/Credentials.js:120 client/src/helpers/Credentials.js:128 #: client/src/helpers/Credentials.js:148 client/src/helpers/Credentials.js:158 #: client/src/helpers/Credentials.js:168 client/src/helpers/Credentials.js:231 @@ -2182,7 +2325,8 @@ msgstr "Semana pasada" #: client/src/helpers/Credentials.js:103 client/src/helpers/Credentials.js:239 msgid "" -"Paste the contents of the PEM file associated with the service account email." +"Paste the contents of the PEM file associated with the service account " +"email." msgstr "" "Pegue el contenido del fichero PEM asociado al correo de la cuenta de " "servicio." @@ -2208,15 +2352,15 @@ msgstr "" msgid "Period" msgstr "Periodo" -#: client/src/controllers/Projects.js:326 client/src/controllers/Users.js:141 +#: client/src/controllers/Projects.js:323 client/src/controllers/Users.js:141 #: client/src/templates/job_templates/add-job-template/job-template-add.controller.js:26 msgid "Permission Error" msgstr "Error de permiso" -#: client/src/forms/Credentials.js:440 client/src/forms/Inventories.js:96 -#: client/src/forms/JobTemplates.js:419 client/src/forms/Projects.js:228 -#: client/src/forms/Teams.js:118 client/src/forms/Users.js:186 -#: client/src/forms/Workflows.js:117 +#: client/src/forms/Credentials.js:441 client/src/forms/Inventories.js:97 +#: client/src/forms/JobTemplates.js:423 client/src/forms/Projects.js:235 +#: client/src/forms/Teams.js:119 client/src/forms/Users.js:186 +#: client/src/forms/Workflows.js:118 msgid "Permissions" msgstr "Permisos" @@ -2229,7 +2373,7 @@ msgstr "Jugada" msgid "Playbook" msgstr "Playbook" -#: client/src/forms/Projects.js:89 +#: client/src/forms/Projects.js:90 msgid "Playbook Directory" msgstr "Directorio de playbook" @@ -2261,8 +2405,8 @@ msgstr "" "Por favor pulse sobre el siguiente botón para visitar la página web de " "Ansible para obtener una clave de licencia Tower." -#: client/src/shared/form-generator.js:836 -#: client/src/shared/form-generator.js:950 +#: client/src/shared/form-generator.js:842 +#: client/src/shared/form-generator.js:956 msgid "" "Please enter a URL that begins with ssh, http or https. The URL may not " "contain the '@' character." @@ -2270,15 +2414,21 @@ msgstr "" "Por favor introduzca una URL que inicie por ssh, http o https. La URL no " "puede contener el caracter '@'." -#: client/src/shared/form-generator.js:1188 +#: client/src/partials/inventory-add.html:11 +#, fuzzy +msgid "Please enter a name for this job template copy." +msgstr "" +"Por favor introduzca un nombre para esta copia de platilla de trabajo." + +#: client/src/shared/form-generator.js:1195 msgid "Please enter a number greater than %d and less than %d." msgstr "Por favor introduzca un número mayor que %d y menor que %d." -#: client/src/shared/form-generator.js:1190 +#: client/src/shared/form-generator.js:1197 msgid "Please enter a number greater than %d." msgstr "Por favor introduzca un número mayor que %d." -#: client/src/shared/form-generator.js:1182 +#: client/src/shared/form-generator.js:1189 msgid "Please enter a number." msgstr "Por favor introduzca un número." @@ -2290,14 +2440,14 @@ msgstr "Por favor introduzca una contraseña." msgid "Please enter a username." msgstr "Por favor introduzca un usuario." -#: client/src/shared/form-generator.js:826 -#: client/src/shared/form-generator.js:940 +#: client/src/shared/form-generator.js:832 +#: client/src/shared/form-generator.js:946 msgid "Please enter a valid email address." msgstr "Por favor introduzca una dirección de correo válida." -#: client/src/shared/form-generator.js:1042 -#: client/src/shared/form-generator.js:821 -#: client/src/shared/form-generator.js:935 +#: client/src/shared/form-generator.js:1049 +#: client/src/shared/form-generator.js:827 +#: client/src/shared/form-generator.js:941 msgid "Please enter a value." msgstr "Por favor introduzca un valor." @@ -2309,14 +2459,14 @@ msgstr "Por favor guarde y ejecute un trabajo para ver" msgid "Please save before adding notifications" msgstr "Por favor guarde antes de añadir notificaciones" -#: client/src/forms/Organizations.js:59 client/src/forms/Teams.js:70 +#: client/src/forms/Organizations.js:59 client/src/forms/Teams.js:71 msgid "Please save before adding users" msgstr "Por favor guarde antes de añadir usuarios" -#: client/src/controllers/Credentials.js:160 -#: client/src/forms/Inventories.js:92 client/src/forms/JobTemplates.js:412 -#: client/src/forms/Projects.js:220 client/src/forms/Teams.js:114 -#: client/src/forms/Workflows.js:110 +#: client/src/controllers/Credentials.js:159 +#: client/src/forms/Inventories.js:93 client/src/forms/JobTemplates.js:416 +#: client/src/forms/Projects.js:227 client/src/forms/Teams.js:115 +#: client/src/forms/Workflows.js:111 msgid "Please save before assigning permissions" msgstr "Por favor guarde antes de asignar permisos" @@ -2328,7 +2478,7 @@ msgstr "Por favor guarde antes de asignar a organizaciones" msgid "Please save before assigning to teams" msgstr "Por favor guarde antes de asignar a equipos" -#: client/src/forms/Workflows.js:186 +#: client/src/forms/Workflows.js:187 msgid "Please save before defining the workflow graph" msgstr "Por favor guarde antes de definir un gráfico de flujo de trabajo" @@ -2351,11 +2501,11 @@ msgstr "" "Por favor seleccione un credencial de Máquina o seleccione la opción " "Preguntar al ejecutar." -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "Please select a number between" msgstr "Por favor seleccione un número entre" -#: client/src/shared/form-generator.js:1219 +#: client/src/shared/form-generator.js:1226 msgid "Please select a number." msgstr "Por favor seleccione un número." @@ -2365,10 +2515,10 @@ msgstr "" "Por favor selecciona una tarea de las siguientes para ver sus servidores " "asociados" -#: client/src/shared/form-generator.js:1110 -#: client/src/shared/form-generator.js:1179 -#: client/src/shared/form-generator.js:1299 -#: client/src/shared/form-generator.js:1406 +#: client/src/shared/form-generator.js:1117 +#: client/src/shared/form-generator.js:1186 +#: client/src/shared/form-generator.js:1306 +#: client/src/shared/form-generator.js:1415 msgid "Please select a value." msgstr "Por favor seleccione un valor." @@ -2382,7 +2532,7 @@ msgstr "" msgid "Please select an Inventory." msgstr "Por favor seleccione un Inventario." -#: client/src/shared/form-generator.js:1216 +#: client/src/shared/form-generator.js:1223 msgid "Please select at least one value." msgstr "Por favor seleccione al menos un valor." @@ -2390,20 +2540,29 @@ msgstr "Por favor seleccione al menos un valor." msgid "Please select resources from the lists below." msgstr "Por favor seleccione recursos de la lista siguiente." +#: client/src/controllers/Credentials.js:347 +#, fuzzy +msgid "" +"Populate the organization field in the form below in order to set " +"permissions." +msgstr "" +"Popule el campo de organización en la forma siguiente para establecer " +"permisos." + #: client/src/notifications/shared/type-change.service.js:27 msgid "Port" msgstr "Puerto" -#: client/src/forms/Credentials.js:258 client/src/helpers/Credentials.js:36 +#: client/src/forms/Credentials.js:259 client/src/helpers/Credentials.js:36 #: client/src/helpers/Credentials.js:60 msgid "Private Key" msgstr "Clave privada" -#: client/src/forms/Credentials.js:265 +#: client/src/forms/Credentials.js:266 msgid "Private Key Passphrase" msgstr "Frase de contraseña para la clave privada" -#: client/src/forms/Credentials.js:280 client/src/forms/Credentials.js:284 +#: client/src/forms/Credentials.js:281 client/src/forms/Credentials.js:285 msgid "Privilege Escalation" msgstr "Elevación de privilegios" @@ -2425,15 +2584,15 @@ msgstr "Proyecto" msgid "Project (Tenant Name)" msgstr "Proyecto (Nombre del inquilino [Tenant])" -#: client/src/forms/Projects.js:75 client/src/forms/Projects.js:83 +#: client/src/forms/Projects.js:76 client/src/forms/Projects.js:84 msgid "Project Base Path" msgstr "Ruta base del proyecto" -#: client/src/forms/Credentials.js:366 +#: client/src/forms/Credentials.js:367 msgid "Project Name" msgstr "Nombre del proyecto" -#: client/src/forms/Projects.js:100 +#: client/src/forms/Projects.js:101 msgid "Project Path" msgstr "Ruta del proyecto" @@ -2441,7 +2600,7 @@ msgstr "Ruta del proyecto" msgid "Project Sync Failures" msgstr "Errores de sincronización del proyecto" -#: client/src/controllers/Projects.js:174 +#: client/src/controllers/Projects.js:172 msgid "Project lookup failed. GET returned:" msgstr "La búsqueda del proyecto ha fallado. GET ha devuelto:" @@ -2449,22 +2608,33 @@ msgstr "La búsqueda del proyecto ha fallado. GET ha devuelto:" #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:46 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:31 #: client/src/dashboard/counts/dashboard-counts.directive.js:61 -#: client/src/lists/Projects.js:16 client/src/lists/Projects.js:17 msgid "Projects" msgstr "Proyectos" #: client/src/forms/JobTemplates.js:162 client/src/forms/JobTemplates.js:234 #: client/src/forms/JobTemplates.js:265 client/src/forms/JobTemplates.js:283 -#: client/src/forms/JobTemplates.js:384 client/src/forms/JobTemplates.js:68 +#: client/src/forms/JobTemplates.js:388 client/src/forms/JobTemplates.js:68 #: client/src/forms/JobTemplates.js:94 msgid "Prompt on launch" msgstr "Preguntar al ejecutar" +#: client/src/partials/subhome.html:6 +#, fuzzy +msgid "Properties" +msgstr "Propiedades" + #: client/src/forms/JobTemplates.js:257 client/src/forms/JobTemplates.js:275 #: client/src/forms/WorkflowMaker.js:139 client/src/forms/WorkflowMaker.js:154 msgid "Provide a comma separated list of tags." msgstr "Introduzca una lista de etiquetas separadas por coma." +#: client/src/dashboard/hosts/dashboard-hosts.form.js:40 +#: client/src/forms/Hosts.js:48 +#, fuzzy +msgid "Provide a host name, ip address, or ip address:port. Examples include:" +msgstr "" +"Provea un nombre de host, dirección ip, ó dirección:puerto. Por ejemplo:" + #: client/src/forms/JobTemplates.js:225 client/src/forms/WorkflowMaker.js:123 msgid "" "Provide a host pattern to further constrain the list of hosts that will be " @@ -2483,7 +2653,7 @@ msgstr "Dirección URL para las llamadas callback" msgid "Queued. Click for details" msgstr "En cola. Pulse para más información" -#: client/src/configuration/auth-form/configuration-auth.controller.js:107 +#: client/src/configuration/auth-form/configuration-auth.controller.js:109 msgid "RADIUS" msgstr "RADIUS" @@ -2514,7 +2684,7 @@ msgstr "ACTUALIZAR" msgid "REGIONS" msgstr "REGIONES" -#: client/src/shared/smart-search/smart-search.partial.html:51 +#: client/src/shared/smart-search/smart-search.partial.html:48 msgid "RELATED FIELDS:" msgstr "CAMPOS RELACIONADOS:" @@ -2570,11 +2740,11 @@ msgid "Relaunch using the same parameters" msgstr "Relanzar utilizando los mismos parámetros" #: client/src/access/add-rbac-user-team/rbac-selected-list.directive.js:37 -#: client/src/forms/Teams.js:143 client/src/forms/Users.js:221 +#: client/src/forms/Teams.js:144 client/src/forms/Users.js:221 msgid "Remove" msgstr "Eliminar" -#: client/src/forms/Projects.js:153 +#: client/src/forms/Projects.js:160 msgid "Remove any local modifications prior to performing an update." msgstr "" "Eliminar cualquier modificación local antes de realizar una actualización." @@ -2587,10 +2757,6 @@ msgstr "Frecuencia de repetición" msgid "Request License" msgstr "Solicitar una licencia" -#: client/src/shared/form-generator.js:681 -msgid "Reset" -msgstr "Reinicializar" - #: client/src/forms/EventsViewer.js:62 client/src/forms/EventsViewer.js:66 #: client/src/forms/EventsViewer.js:69 client/src/forms/EventsViewer.js:70 msgid "Results" @@ -2604,6 +2770,11 @@ msgstr "Resultados Traceback" msgid "Return Code" msgstr "Código devuelto" +#: client/src/shared/form-generator.js:682 +#, fuzzy +msgid "Revert" +msgstr "Revertir" + #: client/src/configuration/auth-form/sub-forms/auth-azure.form.js:46 #: client/src/configuration/auth-form/sub-forms/auth-github-org.form.js:50 #: client/src/configuration/auth-form/sub-forms/auth-github-team.form.js:50 @@ -2611,10 +2782,10 @@ msgstr "Código devuelto" #: client/src/configuration/auth-form/sub-forms/auth-google-oauth2.form.js:58 #: client/src/configuration/auth-form/sub-forms/auth-ldap.form.js:88 #: client/src/configuration/auth-form/sub-forms/auth-radius.form.js:33 -#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:82 +#: client/src/configuration/auth-form/sub-forms/auth-saml.form.js:86 #: client/src/configuration/jobs-form/configuration-jobs.form.js:63 #: client/src/configuration/system-form/sub-forms/system-activity-stream.form.js:25 -#: client/src/configuration/system-form/sub-forms/system-logging.form.js:52 +#: client/src/configuration/system-form/sub-forms/system-logging.form.js:51 #: client/src/configuration/system-form/sub-forms/system-misc.form.js:29 #: client/src/configuration/ui-form/configuration-ui.form.js:35 msgid "Revert all to default" @@ -2624,15 +2795,15 @@ msgstr "Revertir todo a valores por defecto" msgid "Revision" msgstr "Revisión" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "Revision #" msgstr "Revisión n°" -#: client/src/forms/Credentials.js:462 client/src/forms/EventsViewer.js:36 -#: client/src/forms/Inventories.js:121 client/src/forms/Organizations.js:88 -#: client/src/forms/Projects.js:250 client/src/forms/Teams.js:136 -#: client/src/forms/Teams.js:99 client/src/forms/Users.js:204 -#: client/src/forms/Workflows.js:141 +#: client/src/forms/Credentials.js:463 client/src/forms/EventsViewer.js:36 +#: client/src/forms/Inventories.js:122 client/src/forms/Organizations.js:88 +#: client/src/forms/Projects.js:257 client/src/forms/Teams.js:100 +#: client/src/forms/Teams.js:137 client/src/forms/Users.js:204 +#: client/src/forms/Workflows.js:142 msgid "Role" msgstr "Rol" @@ -2640,34 +2811,43 @@ msgstr "Rol" msgid "Running! Click for details" msgstr "¡En ejecución!. Pulse para más detalles" -#: client/src/configuration/auth-form/configuration-auth.controller.js:108 +#: client/src/configuration/auth-form/configuration-auth.controller.js:110 msgid "SAML" msgstr "SAML" +#: client/src/partials/survey-maker-modal.html:86 +#, fuzzy +msgid "SAVE" +msgstr "GUARDAR" + #: client/src/scheduler/main.js:314 msgid "SCHEDULED" msgstr "PROGRAMADO" -#: client/src/helpers/ActivityStream.js:50 client/src/inventories/main.js:59 +#: client/src/lists/ScheduledJobs.js:15 +#, fuzzy +msgid "SCHEDULED JOBS" +msgstr "TRABAJOS PROGRAMADOS" + +#: client/src/helpers/ActivityStream.js:50 client/src/inventories/main.js:103 +#: client/src/inventories/main.js:62 #: client/src/management-jobs/scheduler/main.js:26 -#: client/src/scheduler/main.js:129 client/src/scheduler/main.js:219 -#: client/src/scheduler/main.js:36 +#: client/src/management-jobs/scheduler/main.js:32 +#: client/src/scheduler/main.js:129 client/src/scheduler/main.js:167 +#: client/src/scheduler/main.js:219 client/src/scheduler/main.js:257 +#: client/src/scheduler/main.js:36 client/src/scheduler/main.js:74 msgid "SCHEDULES" msgstr "PROGRAMACIONES" -#: client/src/controllers/Projects.js:699 +#: client/src/controllers/Projects.js:715 msgid "SCM Branch" msgstr "Rama SCM" -#: client/src/forms/Projects.js:154 +#: client/src/forms/Projects.js:161 msgid "SCM Clean" msgstr "Limpiar SCM" -#: client/src/forms/Projects.js:130 -msgid "SCM Credential" -msgstr "Credencial SCM" - -#: client/src/forms/Projects.js:165 +#: client/src/forms/Projects.js:172 msgid "SCM Delete" msgstr "Eliminar SCM" @@ -2675,25 +2855,25 @@ msgstr "Eliminar SCM" msgid "SCM Private Key" msgstr "Clave privada SCM" -#: client/src/forms/Projects.js:56 +#: client/src/forms/Projects.js:57 msgid "SCM Type" msgstr "Tipo SCM" #: client/src/dashboard/graphs/dashboard-graphs.partial.html:49 -#: client/src/forms/Projects.js:175 +#: client/src/forms/Projects.js:182 msgid "SCM Update" msgstr "Actualizar SCM" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "SCM Update Cancel" msgstr "Cancelar actualización SCM" -#: client/src/forms/Projects.js:145 +#: client/src/forms/Projects.js:152 msgid "SCM Update Options" msgstr "Opciones de actualización SCM" -#: client/src/controllers/Projects.js:585 -#: client/src/controllers/Projects.js:88 +#: client/src/controllers/Projects.js:595 +#: client/src/controllers/Projects.js:86 msgid "SCM update currently running" msgstr "Actualización SCM actualmente en ejecución" @@ -2722,16 +2902,16 @@ msgstr "SOURCE" msgid "SSH Key" msgstr "Clave SSH" -#: client/src/forms/Credentials.js:256 +#: client/src/forms/Credentials.js:257 msgid "SSH key description" msgstr "Descripción de la clave SSH" -#: client/src/notifications/notificationTemplates.form.js:388 +#: client/src/notifications/notificationTemplates.form.js:387 msgid "SSL Connection" msgstr "Conexión SSL" #: client/src/job-detail/job-detail.partial.html:414 -#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:108 +#: client/src/standard-out/adhoc/standard-out-adhoc.partial.html:128 #: client/src/standard-out/inventory-sync/standard-out-inventory-sync.partial.html:131 #: client/src/standard-out/scm-update/standard-out-scm-update.partial.html:96 msgid "STANDARD OUT" @@ -2749,7 +2929,7 @@ msgstr "INICIADO" msgid "STATUS" msgstr "ESTADO" -#: client/src/forms/Credentials.js:120 client/src/forms/Credentials.js:128 +#: client/src/forms/Credentials.js:121 client/src/forms/Credentials.js:129 msgid "STS Token" msgstr "Token STS" @@ -2765,12 +2945,13 @@ msgstr "SISTEMA DE RASTREO" msgid "Satellite 6 URL" msgstr "URL Satellite 6" +#: client/src/access/add-rbac-resource/rbac-resource.partial.html:110 #: client/src/access/add-rbac-user-team/rbac-user-team.partial.html:176 -#: client/src/shared/form-generator.js:1699 +#: client/src/shared/form-generator.js:1708 msgid "Save" msgstr "Guardar" -#: client/src/configuration/auth-form/configuration-auth.controller.js:81 +#: client/src/configuration/auth-form/configuration-auth.controller.js:83 #: client/src/configuration/configuration.controller.js:192 #: client/src/configuration/configuration.controller.js:251 #: client/src/configuration/system-form/configuration-system.controller.js:60 @@ -2781,7 +2962,7 @@ msgstr "Guardar los cambios" msgid "Save successful!" msgstr "Guardado correctamente" -#: client/src/lists/Templates.js:92 +#: client/src/lists/Templates.js:92 client/src/partials/subhome.html:10 msgid "Schedule" msgstr "Planificar" @@ -2789,7 +2970,7 @@ msgstr "Planificar" msgid "Schedule Management Job" msgstr "Planificar trabajo de gestión" -#: client/src/controllers/Projects.js:80 +#: client/src/controllers/Projects.js:78 msgid "Schedule future SCM updates" msgstr "Planificar futuras actualizaciones SCM" @@ -2797,42 +2978,35 @@ msgstr "Planificar futuras actualizaciones SCM" msgid "Schedule future job template runs" msgstr "Planificar futuras ejecuciones de plantilla de trabajo." -#: client/src/lists/ScheduledJobs.js:15 -msgid "Scheduled Jobs" -msgstr "Trabajos programados" - #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:32 -#: client/src/inventories/main.js:100 client/src/jobs/jobs.partial.html:10 -#: client/src/management-jobs/scheduler/main.js:32 -#: client/src/scheduler/main.js:167 client/src/scheduler/main.js:257 -#: client/src/scheduler/main.js:74 +#: client/src/jobs/jobs.partial.html:10 msgid "Schedules" msgstr "Programaciones" -#: client/src/inventory-scripts/inventory-scripts.form.js:62 +#: client/src/inventory-scripts/inventory-scripts.form.js:63 msgid "Script must begin with a hashbang sequence: i.e.... %s" msgstr "El script debe comenzar con la secuencia hashbang: p.e. ....%s" -#: client/src/shared/smart-search/smart-search.controller.js:38 -#: client/src/shared/smart-search/smart-search.controller.js:83 +#: client/src/shared/smart-search/smart-search.controller.js:39 +#: client/src/shared/smart-search/smart-search.controller.js:84 msgid "Search" msgstr "Buscar" -#: client/src/forms/Credentials.js:105 +#: client/src/forms/Credentials.js:106 msgid "Secret Key" msgstr "Clave secreta" -#: client/src/forms/Credentials.js:125 +#: client/src/forms/Credentials.js:126 msgid "" "Security Token Service (STS) is a web service that enables you to request " "temporary, limited-privilege credentials for AWS Identity and Access " "Management (IAM) users." msgstr "" -"El Security Token Service (STS) es un servicio web que habilita su solicitud " -"temporalmente y con credenciales con privilegio limitado para usuarios de " +"El Security Token Service (STS) es un servicio web que habilita su solicitud" +" temporalmente y con credenciales con privilegio limitado para usuarios de " "AWS Identity y Access Management (IAM)." -#: client/src/shared/form-generator.js:1703 +#: client/src/shared/form-generator.js:1712 msgid "Select" msgstr "Seleccionar" @@ -2840,26 +3014,26 @@ msgstr "Seleccionar" msgid "Select a role" msgstr "Seleccionar un rol" -#: client/src/configuration/jobs-form/configuration-jobs.controller.js:90 -#: client/src/configuration/ui-form/configuration-ui.controller.js:85 +#: client/src/configuration/jobs-form/configuration-jobs.controller.js:93 +#: client/src/configuration/ui-form/configuration-ui.controller.js:95 msgid "Select commands" msgstr "Seleccionar comandos" -#: client/src/forms/Projects.js:98 +#: client/src/forms/Projects.js:99 msgid "" -"Select from the list of directories found in the Project Base Path. Together " -"the base path and the playbook directory provide the full path used to " +"Select from the list of directories found in the Project Base Path. Together" +" the base path and the playbook directory provide the full path used to " "locate playbooks." msgstr "" "Seleccione desde la lista de directorios encontrados en el directorio base " "del proyecto. Junto al directorio base y el directorio del playbook se " "construirá la ruta completa utilizada para encontrar playbooks." -#: client/src/configuration/auth-form/configuration-auth.controller.js:230 +#: client/src/configuration/auth-form/configuration-auth.controller.js:256 msgid "Select group types" msgstr "Seleccionar un tipo de grupo" -#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:25 +#: client/src/access/rbac-multiselect/rbac-multiselect-role.directive.js:24 msgid "Select roles" msgstr "Seleccionar roles" @@ -2871,8 +3045,8 @@ msgid "" msgstr "" "Seleccione el credential que desea que el trabajo utilizará al conectarse a " "servidores remotos. Escoja un credencial que contenga el usuario y la clave " -"SSH o la contraseña que Ansible necesitará para autentificarse dentro de los " -"sistema remotos" +"SSH o la contraseña que Ansible necesitará para autentificarse dentro de los" +" sistema remotos" #: client/src/forms/JobTemplates.js:86 client/src/forms/WorkflowMaker.js:88 msgid "Select the inventory containing the hosts you want this job to manage." @@ -2891,7 +3065,7 @@ msgstr "" "Seleccionar el proyecto que contiene el playbook que desea ejecutar este " "trabajo." -#: client/src/configuration/system-form/configuration-system.controller.js:170 +#: client/src/configuration/system-form/configuration-system.controller.js:177 msgid "Select types" msgstr "Seleccionar los tipos" @@ -2906,7 +3080,7 @@ msgstr "" "permitiendo el provisionado dentro del Cloud sin necesitar pasar los " "parámetros manualmente a los módulos incluidos." -#: client/src/notifications/notificationTemplates.form.js:86 +#: client/src/notifications/notificationTemplates.form.js:114 msgid "Sender Email" msgstr "Dirección de correo del remitente" @@ -2928,18 +3102,18 @@ msgstr "La configuración del tipo a %s no ejecutará el playbook." #: client/src/forms/WorkflowMaker.js:106 msgid "" -"Setting the type to %s will not execute the playbook. Instead, %s will check " -"playbook syntax, test environment setup and report problems." +"Setting the type to %s will not execute the playbook. Instead, %s will check" +" playbook syntax, test environment setup and report problems." msgstr "" "La configuración del tipo a %s no ejecutará el playbook. En cambio, %s " -"comprobará la sintaxis del playbook, la configuración del entorno de pruebas " -"e informará de problemas." +"comprobará la sintaxis del playbook, la configuración del entorno de pruebas" +" e informará de problemas." #: client/src/main-menu/main-menu.partial.html:147 msgid "Settings" msgstr "Ajustes" -#: client/src/shared/form-generator.js:851 +#: client/src/shared/form-generator.js:857 msgid "Show" msgstr "Mostrar" @@ -2969,10 +3143,15 @@ msgid "" "Skip tags are useful when you have a large playbook, and you want to skip " "specific parts of a play or task." msgstr "" -"Omitir etiquetas es útil cuando se posee de un playbook largo y desea omitir " -"algunas partes de una jugada o tarea." +"Omitir etiquetas es útil cuando se posee de un playbook largo y desea omitir" +" algunas partes de una jugada o tarea." -#: client/src/forms/Credentials.js:76 +#: client/src/partials/subhome.html:8 +#, fuzzy +msgid "Source" +msgstr "FUENTE" + +#: client/src/forms/Credentials.js:77 msgid "Source Control" msgstr "Fuente de control" @@ -2980,7 +3159,7 @@ msgstr "Fuente de control" msgid "Source Details" msgstr "Detalles de la fuente" -#: client/src/notifications/notificationTemplates.form.js:199 +#: client/src/notifications/notificationTemplates.form.js:198 msgid "Source Phone Number" msgstr "Número de teléfono de la fuente" @@ -2988,11 +3167,11 @@ msgstr "Número de teléfono de la fuente" msgid "Source Vars" msgstr "Vars de la fuente" -#: client/src/notifications/notificationTemplates.form.js:336 +#: client/src/notifications/notificationTemplates.form.js:335 msgid "Specify HTTP Headers in JSON format" msgstr "Especificar las cabeceras HTTP en formato JSON" -#: client/src/forms/Credentials.js:286 +#: client/src/forms/Credentials.js:287 msgid "" "Specify a method for %s operations. This is equivalent to specifying the %s " "parameter, where %s could be %s" @@ -3028,8 +3207,8 @@ msgstr "Hora de inicio" msgid "Start a job using this template" msgstr "Iniciar un trabajo usando esta plantilla" -#: client/src/controllers/Projects.js:582 -#: client/src/controllers/Projects.js:79 +#: client/src/controllers/Projects.js:592 +#: client/src/controllers/Projects.js:77 msgid "Start an SCM update" msgstr "Iniciar una actualización de SCM" @@ -3044,7 +3223,7 @@ msgstr "Iniciado" #: client/src/forms/EventsViewer.js:24 client/src/forms/LogViewerStatus.js:28 #: client/src/job-detail/job-detail.partial.html:26 #: client/src/lists/JobEvents.js:51 -#: client/src/notifications/notification-templates-list/list.controller.js:73 +#: client/src/notifications/notification-templates-list/list.controller.js:71 #: client/src/partials/logviewer.html:4 msgid "Status" msgstr "Estado" @@ -3057,7 +3236,7 @@ msgstr "Subcategoría" msgid "Submit" msgstr "Enviar" -#: client/src/helpers/Jobs.js:230 +#: client/src/helpers/Jobs.js:226 msgid "Submit the request to cancel?" msgstr "¿Enviar la solicitud de cancelación?" @@ -3065,14 +3244,15 @@ msgstr "¿Enviar la solicitud de cancelación?" msgid "Subscription" msgstr "Subscripción" -#: client/src/forms/Credentials.js:152 client/src/forms/Credentials.js:163 +#: client/src/forms/Credentials.js:153 client/src/forms/Credentials.js:164 msgid "Subscription ID" msgstr "ID de suscripción" -#: client/src/forms/Credentials.js:162 +#: client/src/forms/Credentials.js:163 msgid "Subscription ID is an Azure construct, which is mapped to a username." msgstr "" -"El ID de subscripción es un elemento Azure, el cual está asociado al usuario." +"El ID de subscripción es un elemento Azure, el cual está asociado al " +"usuario." #: client/src/notifications/notifications.list.js:38 msgid "Success" @@ -3104,11 +3284,13 @@ msgstr "" "Los auditores de sistema tienen permisos sólo de lectura en esta sección." #: client/src/app.js:344 client/src/helpers/ActivityStream.js:35 +#: client/src/lists/Teams.js:16 client/src/lists/Teams.js:17 #: client/src/organizations/linkout/organizations-linkout.route.js:97 msgid "TEAMS" msgstr "EQUIPOS" -#: client/src/helpers/ActivityStream.js:56 +#: client/src/helpers/ActivityStream.js:56 client/src/lists/Templates.js:17 +#: client/src/lists/Templates.js:18 #: client/src/main-menu/main-menu.partial.html:113 #: client/src/main-menu/main-menu.partial.html:35 #: client/src/templates/list/templates-list.route.js:13 @@ -3127,7 +3309,7 @@ msgstr "" "Etiquetas son útiles cuando se tiene un playbook largo y se desea " "especificar una parte específica de una jugada o tarea." -#: client/src/notifications/notificationTemplates.form.js:316 +#: client/src/notifications/notificationTemplates.form.js:315 msgid "Target URL" msgstr "URL destino" @@ -3139,17 +3321,16 @@ msgstr "Tarea" msgid "Tasks" msgstr "Tareas" -#: client/src/forms/Credentials.js:468 client/src/forms/Inventories.js:127 -#: client/src/forms/Projects.js:256 client/src/forms/Workflows.js:147 +#: client/src/forms/Credentials.js:469 client/src/forms/Inventories.js:128 +#: client/src/forms/Projects.js:263 client/src/forms/Workflows.js:148 msgid "Team Roles" msgstr "Roles de equipo" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:40 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:33 -#: client/src/forms/Users.js:158 client/src/lists/Teams.js:16 -#: client/src/lists/Teams.js:17 +#: client/src/forms/Users.js:158 #: client/src/setup-menu/setup-menu.partial.html:16 -#: client/src/shared/stateDefinitions.factory.js:342 +#: client/src/shared/stateDefinitions.factory.js:345 msgid "Teams" msgstr "Equipos" @@ -3159,11 +3340,10 @@ msgid "Template" msgstr "Plantilla" #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:34 -#: client/src/lists/Templates.js:17 client/src/lists/Templates.js:18 msgid "Templates" msgstr "Plantillas" -#: client/src/forms/Credentials.js:338 +#: client/src/forms/Credentials.js:339 msgid "Tenant ID" msgstr "ID inquilino [Tenant]" @@ -3171,8 +3351,8 @@ msgstr "ID inquilino [Tenant]" msgid "Test notification" msgstr "Probar notificación" -#: client/src/shared/form-generator.js:1414 -#: client/src/shared/form-generator.js:1420 +#: client/src/shared/form-generator.js:1423 +#: client/src/shared/form-generator.js:1429 msgid "That value was not found. Please enter or select a valid value." msgstr "" "El valor no fue encontrado. Por favor introduzca o seleccione un valor " @@ -3186,7 +3366,7 @@ msgstr "" "El ID del proyecto es el identificador asignado en GCE. Se construye de dos " "palabras seguidas por tres dígitos. Ejemplo:" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "The SCM update process is running." msgstr "El proceso de actualización SCM está en ejecución." @@ -3194,7 +3374,7 @@ msgstr "El proceso de actualización SCM está en ejecución." msgid "The credential used to run this command." msgstr "El credencial utilizado para ejecutar este comando." -#: client/src/forms/Credentials.js:191 +#: client/src/forms/Credentials.js:192 msgid "" "The email address assigned to the Google Compute Engine %sservice account." msgstr "" @@ -3216,14 +3396,14 @@ msgstr "El inventario en el cual este comando se ejecutará." #: client/src/forms/JobTemplates.js:212 msgid "" "The number of parallel or simultaneous processes to use while executing the " -"playbook. 0 signifies the default value from the %sansible configuration file" -"%s." +"playbook. 0 signifies the default value from the %sansible configuration " +"file%s." msgstr "" "El número de procesos paralelos o simultáneos a utilizar cuando se ejecuta " "los playbooks. 0 indica el valor por defecto desde el %sfichero de " "configuración ansible%s." -#: client/src/job-results/job-results.controller.js:554 +#: client/src/job-results/job-results.controller.js:567 msgid "The output is too large to display. Please download." msgstr "La salida es muy larga para ser mostrada. Por favor descárguela." @@ -3231,7 +3411,7 @@ msgstr "La salida es muy larga para ser mostrada. Por favor descárguela." msgid "The project value" msgstr "El valor del proyecto" -#: client/src/controllers/Projects.js:163 +#: client/src/controllers/Projects.js:161 msgid "" "The selected project is not configured for SCM. To configure for SCM, edit " "the project and provide SCM settings, and then run an update." @@ -3260,20 +3440,20 @@ msgstr "No hay plantillas de trabajo a mostrar por el momento" msgid "There are no jobs to display at this time" msgstr "No hay trabajos a mostrar por el momento" -#: client/src/controllers/Projects.js:154 +#: client/src/controllers/Projects.js:152 msgid "" -"There is no SCM update information available for this project. An update has " -"not yet been completed. If you have not already done so, start an update " +"There is no SCM update information available for this project. An update has" +" not yet been completed. If you have not already done so, start an update " "for this project." msgstr "" "No hay información disponible de la actualización SCM disponible para este " "proyecto. Una actualización no ha sido todavía completada." -#: client/src/configuration/configuration.controller.js:308 +#: client/src/configuration/configuration.controller.js:319 msgid "There was an error resetting value. Returned status:" msgstr "Ha habido un error reiniciando el valor. Estado devuelto:" -#: client/src/configuration/configuration.controller.js:439 +#: client/src/configuration/configuration.controller.js:458 msgid "There was an error resetting values. Returned status:" msgstr "Ha habido un error reiniciando valores. Estado devuelto:" @@ -3285,8 +3465,8 @@ msgstr "Éste no es un número válido." msgid "" "This is the tenant name. This value is usually the same as the username." msgstr "" -"Este es el nombre del inquilino [Tenant]. Este valor normalmente es el mismo " -"que el usuario." +"Este es el nombre del inquilino [Tenant]. Este valor normalmente es el mismo" +" que el usuario." #: client/src/notifications/notifications.list.js:21 msgid "" @@ -3296,16 +3476,24 @@ msgstr "" "La lista contiene las plantillas de notificación añadidas desde la sección " "%sNotificaciones%s" -#: client/src/notifications/notificationTemplates.form.js:202 +#: client/src/notifications/notificationTemplates.form.js:201 msgid "This must be of the form %s." msgstr "Esto debe tener el formato %s" +#: client/src/shared/form-generator.js:745 +#, fuzzy +msgid "" +"This setting has been set manually in a settings file and is now disabled." +msgstr "" +"Este valor ha sido establecido manualmente en el fichero de configuración y " +"ahora está inhabilitado." + #: client/src/forms/Users.js:163 msgid "This user is not a member of any teams" msgstr "Este usuario no es miembro de ningún equipo." -#: client/src/shared/form-generator.js:831 -#: client/src/shared/form-generator.js:945 +#: client/src/shared/form-generator.js:837 +#: client/src/shared/form-generator.js:951 msgid "" "This value does not match the password you entered previously. Please " "confirm that password." @@ -3313,7 +3501,7 @@ msgstr "" "Este valor no corresponde con la contraseña introducida anteriormente. Por " "favor confirme la contraseña." -#: client/src/configuration/configuration.controller.js:464 +#: client/src/configuration/configuration.controller.js:483 msgid "" "This will reset all configuration values to their factory defaults. Are you " "sure you want to proceed?" @@ -3323,7 +3511,7 @@ msgstr "" #: client/src/dashboard/lists/jobs/jobs-list.partial.html:14 #: client/src/lists/Streams.js:28 -#: client/src/notifications/notification-templates-list/list.controller.js:74 +#: client/src/notifications/notification-templates-list/list.controller.js:72 msgid "Time" msgstr "Duración" @@ -3331,12 +3519,12 @@ msgstr "Duración" msgid "Time Remaining" msgstr "Tiempo restante" -#: client/src/forms/Projects.js:191 +#: client/src/forms/Projects.js:198 msgid "" "Time in seconds to consider a project to be current. During job runs and " "callbacks the task system will evaluate the timestamp of the latest project " -"update. If it is older than Cache Timeout, it is not considered current, and " -"a new project update will be performed." +"update. If it is older than Cache Timeout, it is not considered current, and" +" a new project update will be performed." msgstr "" "Tiempo en segundos a considerar que un proyecto es reciente. Durante la " "ejecución del trabajo y callbacks la tarea del sistema evaluará la fecha y " @@ -3349,9 +3537,10 @@ msgstr "" msgid "Timing" msgstr "Timing" -#: client/src/forms/Credentials.js:126 +#: client/src/forms/Credentials.js:127 msgid "" -"To learn more about the IAM STS Token, refer to the %sAmazon documentation%s." +"To learn more about the IAM STS Token, refer to the %sAmazon " +"documentation%s." msgstr "" "Para aprender más sobre el token de IAM STS, acuda a la documentación de " "%sAmazon%s." @@ -3360,7 +3549,7 @@ msgstr "" msgid "Toggle Output" msgstr "Conmutar salida" -#: client/src/shared/form-generator.js:856 +#: client/src/shared/form-generator.js:862 msgid "Toggle the display of plaintext." msgstr "Conmutar la visualización en texto plano." @@ -3373,8 +3562,8 @@ msgstr "Token" msgid "Traceback" msgstr "Traceback" -#: client/src/forms/Credentials.js:61 client/src/forms/Credentials.js:85 -#: client/src/forms/Teams.js:131 client/src/forms/Users.js:199 +#: client/src/forms/Credentials.js:62 client/src/forms/Credentials.js:86 +#: client/src/forms/Teams.js:132 client/src/forms/Users.js:199 #: client/src/forms/WorkflowMaker.js:34 client/src/lists/AllJobs.js:61 #: client/src/lists/CompletedJobs.js:50 client/src/lists/Credentials.js:39 #: client/src/lists/Projects.js:43 client/src/lists/ScheduledJobs.js:44 @@ -3391,19 +3580,20 @@ msgid "Type Details" msgstr "Detalles del tipo" #: client/src/notifications/notificationTemplates.form.js:100 -#: client/src/notifications/notificationTemplates.form.js:215 +#: client/src/notifications/notificationTemplates.form.js:214 msgid "Type an option on each line." msgstr "Escriba una opción en cada línea" -#: client/src/notifications/notificationTemplates.form.js:144 -#: client/src/notifications/notificationTemplates.form.js:161 -#: client/src/notifications/notificationTemplates.form.js:374 +#: client/src/notifications/notificationTemplates.form.js:143 +#: client/src/notifications/notificationTemplates.form.js:160 +#: client/src/notifications/notificationTemplates.form.js:373 msgid "Type an option on each line. The pound symbol (#) is not required." msgstr "" -"Escriba una opción en cada línea. El símbolo almohadilla (#) no es necesario." +"Escriba una opción en cada línea. El símbolo almohadilla (#) no es " +"necesario." -#: client/src/controllers/Projects.js:444 -#: client/src/controllers/Projects.js:726 +#: client/src/controllers/Projects.js:453 +#: client/src/controllers/Projects.js:752 msgid "URL popover text" msgstr "Texto 'popover' de la URL" @@ -3412,19 +3602,20 @@ msgid "USERNAME" msgstr "NOMBRE DE USUARIO" #: client/src/app.js:368 client/src/helpers/ActivityStream.js:32 +#: client/src/lists/Users.js:20 client/src/lists/Users.js:21 #: client/src/organizations/linkout/organizations-linkout.route.js:41 msgid "USERS" msgstr "USUARIOS" -#: client/src/controllers/Projects.js:262 +#: client/src/controllers/Projects.js:260 msgid "Update Not Found" msgstr "Actualización no encontrada" -#: client/src/controllers/Projects.js:735 +#: client/src/controllers/Projects.js:761 msgid "Update in Progress" msgstr "Actualización en curso" -#: client/src/forms/Projects.js:172 +#: client/src/forms/Projects.js:179 msgid "Update on Launch" msgstr "Actualizar al ejecutar" @@ -3432,27 +3623,27 @@ msgstr "Actualizar al ejecutar" msgid "Upgrade" msgstr "Actualizar" -#: client/src/notifications/notificationTemplates.form.js:408 +#: client/src/notifications/notificationTemplates.form.js:407 msgid "Use SSL" msgstr "Utilizar SSL" -#: client/src/notifications/notificationTemplates.form.js:403 +#: client/src/notifications/notificationTemplates.form.js:402 msgid "Use TLS" msgstr "Utilizar TLS" -#: client/src/forms/Credentials.js:77 +#: client/src/forms/Credentials.js:78 msgid "" -"Used to check out and synchronize playbook repositories with a remote source " -"control management system such as Git, Subversion (svn), or Mercurial (hg). " -"These credentials are used by Projects." +"Used to check out and synchronize playbook repositories with a remote source" +" control management system such as Git, Subversion (svn), or Mercurial (hg)." +" These credentials are used by Projects." msgstr "" -"Utilizado para verificar y sincronizar los repositorios playbook con sistema " -"remoto de gestión de código fuente como Git, Subversion (svn) o Mercurial " +"Utilizado para verificar y sincronizar los repositorios playbook con sistema" +" remoto de gestión de código fuente como Git, Subversion (svn) o Mercurial " "(hg). Estos credenciales son utilizados por proyectos." -#: client/src/forms/Credentials.js:457 client/src/forms/Inventories.js:116 -#: client/src/forms/Organizations.js:83 client/src/forms/Projects.js:245 -#: client/src/forms/Teams.js:94 client/src/forms/Workflows.js:136 +#: client/src/forms/Credentials.js:458 client/src/forms/Inventories.js:117 +#: client/src/forms/Organizations.js:83 client/src/forms/Projects.js:252 +#: client/src/forms/Teams.js:95 client/src/forms/Workflows.js:137 msgid "User" msgstr "Usuario" @@ -3465,7 +3656,7 @@ msgid "User Type" msgstr "Tipo de usuario" #: client/src/access/rbac-multiselect/permissionsUsers.list.js:30 -#: client/src/forms/Users.js:49 client/src/helpers/Credentials.js:118 +#: client/src/forms/Users.js:60 client/src/helpers/Credentials.js:118 #: client/src/helpers/Credentials.js:225 client/src/helpers/Credentials.js:254 #: client/src/helpers/Credentials.js:32 client/src/helpers/Credentials.js:56 #: client/src/helpers/Credentials.js:89 client/src/lists/Users.js:31 @@ -3473,7 +3664,7 @@ msgstr "Tipo de usuario" msgid "Username" msgstr "Usuario" -#: client/src/forms/Credentials.js:81 +#: client/src/forms/Credentials.js:82 msgid "" "Usernames, passwords, and access keys for authenticating to the specified " "cloud or infrastructure provider. These are used for dynamic inventory " @@ -3486,8 +3677,7 @@ msgstr "" #: client/src/access/add-rbac-resource/rbac-resource.partial.html:35 #: client/src/activity-stream/streamDropdownNav/stream-dropdown-nav.directive.js:35 -#: client/src/forms/Organizations.js:65 client/src/forms/Teams.js:76 -#: client/src/lists/Users.js:20 client/src/lists/Users.js:21 +#: client/src/forms/Organizations.js:65 client/src/forms/Teams.js:77 #: client/src/setup-menu/setup-menu.partial.html:10 msgid "Users" msgstr "Usuarios" @@ -3510,11 +3700,12 @@ msgstr "" msgid "Valid License" msgstr "Licencia válida" -#: client/src/forms/Inventories.js:55 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:56 +#: client/src/forms/Hosts.js:66 client/src/forms/Inventories.js:56 msgid "Variables" msgstr "Variables" -#: client/src/forms/Credentials.js:392 +#: client/src/forms/Credentials.js:393 msgid "Vault Password" msgstr "Contraseña Vault" @@ -3524,7 +3715,6 @@ msgstr "Contraseña Vault" msgid "Verbosity" msgstr "Nivel de detalle" -#: client/src/about/about.controller.js:24 #: client/src/license/license.partial.html:15 msgid "Version" msgstr "Versión" @@ -3547,16 +3737,18 @@ msgstr "Mostrar el flujo de actividad" msgid "View Documentation" msgstr "Mostrar la documentación" -#: client/src/forms/Inventories.js:65 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:69 +#: client/src/forms/Hosts.js:76 client/src/forms/Inventories.js:66 msgid "View JSON examples at %s" msgstr "Mostrar los ejemplos JSON en %s" -#: client/src/forms/JobTemplates.js:466 client/src/forms/Workflows.js:164 -#: client/src/shared/form-generator.js:1727 +#: client/src/forms/JobTemplates.js:470 client/src/forms/Workflows.js:165 +#: client/src/shared/form-generator.js:1736 msgid "View Survey" msgstr "Mostrar el cuestionario" -#: client/src/forms/Inventories.js:66 +#: client/src/dashboard/hosts/dashboard-hosts.form.js:70 +#: client/src/forms/Hosts.js:77 client/src/forms/Inventories.js:67 msgid "View YAML examples at %s" msgstr "Mostrar los ejemplos YAML en %s" @@ -3608,11 +3800,11 @@ msgstr "Mostrar plantilla" msgid "View the job" msgstr "Mostrar el trabajo" -#: client/src/lists/Projects.js:109 +#: client/src/lists/Projects.js:110 msgid "View the project" msgstr "Mostrar el proyecto" -#: client/src/lists/ScheduledJobs.js:75 +#: client/src/lists/ScheduledJobs.js:76 msgid "View the schedule" msgstr "Mostrar el calendario" @@ -3635,7 +3827,7 @@ msgstr "FLUJO DE TRABAJO" msgid "Waiting..." msgstr "Esperando..." -#: client/src/configuration/auth-form/configuration-auth.controller.js:68 +#: client/src/configuration/auth-form/configuration-auth.controller.js:70 #: client/src/configuration/configuration.controller.js:179 #: client/src/configuration/configuration.controller.js:241 #: client/src/configuration/system-form/configuration-system.controller.js:47 @@ -3662,7 +3854,7 @@ msgstr "" "Cuando una plantilla es lanzada como un trabajo, configurar el tipo a %s " "ejecutará el playbook, ejecutará las tareas en los servidores seleccionados." -#: client/src/forms/Workflows.js:188 client/src/shared/form-generator.js:1731 +#: client/src/forms/Workflows.js:189 client/src/shared/form-generator.js:1740 msgid "Workflow Editor" msgstr "Editor de flujo de trabajo" @@ -3677,12 +3869,13 @@ msgstr "Plantillas de flujo de trabajo" #: client/src/dashboard/lists/job-templates/job-templates-list.partial.html:58 msgid "" -"You can create a job template here." -msgstr "Usted puede crear una plantilla de trabajo here." +msgstr "" +"Usted puede crear una plantilla de trabajo aquí." -# /templates/add_job_template">aquí." -#: client/src/controllers/Projects.js:510 +#: client/src/controllers/Projects.js:519 msgid "You do not have access to view this property" msgstr "Usted no tiene permiso para ver esta propiedad" @@ -3690,7 +3883,7 @@ msgstr "Usted no tiene permiso para ver esta propiedad" msgid "You do not have permission to add a job template." msgstr "Usted no tiene permiso para añadir una plantilla de trabajo." -#: client/src/controllers/Projects.js:326 +#: client/src/controllers/Projects.js:323 msgid "You do not have permission to add a project." msgstr "Usted no tiene permiso para añadir un proyecto." @@ -3698,48 +3891,48 @@ msgstr "Usted no tiene permiso para añadir un proyecto." msgid "You do not have permission to add a user." msgstr "Usted no tiene permiso para añadir un usuario." -#: client/src/configuration/auth-form/configuration-auth.controller.js:67 +#: client/src/configuration/auth-form/configuration-auth.controller.js:69 #: client/src/configuration/configuration.controller.js:178 #: client/src/configuration/configuration.controller.js:240 #: client/src/configuration/system-form/configuration-system.controller.js:46 msgid "" -"You have unsaved changes. Would you like to proceed without " -"saving?" +"You have unsaved changes. Would you like to proceed without" +" saving?" msgstr "" -"Usted tiene modificaciones sin guardar.¿Desea proceder sin " +"Usted tiene modificaciones sin guardar.¿Desea proceder sin " "guardarlas?" -#: client/src/shared/form-generator.js:957 +#: client/src/shared/form-generator.js:963 msgid "Your password must be %d characters long." msgstr "Su password debe ser de longitud %d." -#: client/src/shared/form-generator.js:962 +#: client/src/shared/form-generator.js:968 msgid "Your password must contain a lowercase letter." msgstr "Su password debe contener al menos una letra minúscula." -#: client/src/shared/form-generator.js:972 +#: client/src/shared/form-generator.js:978 msgid "Your password must contain a number." msgstr "Su password debe contener un número." -#: client/src/shared/form-generator.js:967 +#: client/src/shared/form-generator.js:973 msgid "Your password must contain an uppercase letter." msgstr "Su password debe contener una letra mayúscula." -#: client/src/shared/form-generator.js:977 +#: client/src/shared/form-generator.js:983 msgid "Your password must contain one of the following characters: %s" msgstr "Su password debe contener uno de los siguientes caracteres: %s" -#: client/src/controllers/Projects.js:218 +#: client/src/controllers/Projects.js:216 msgid "Your request to cancel the update was submitted to the task manager." msgstr "" -"Su solicitud de cancelación de la actualización ha sido enviada al gestor de " -"tareas." +"Su solicitud de cancelación de la actualización ha sido enviada al gestor de" +" tareas." #: client/src/login/loginModal/loginModal.partial.html:22 msgid "Your session timed out due to inactivity. Please sign in." msgstr "Su sesión ha expirado debido a inactividad. Por favor conéctese." -#: client/src/shared/form-generator.js:1223 +#: client/src/shared/form-generator.js:1230 msgid "and" msgstr "y" @@ -3751,18 +3944,18 @@ msgstr "nombre" msgid "organization" msgstr "organización" -#: client/src/forms/Credentials.js:139 client/src/forms/Credentials.js:365 +#: client/src/forms/Credentials.js:140 client/src/forms/Credentials.js:366 msgid "set in helpers/credentials" msgstr "definir en helpers/credentials" -#: client/src/forms/Credentials.js:382 +#: client/src/forms/Credentials.js:383 msgid "v2 URLs%s - leave blank" msgstr "v2 URLs%s - dejad en blanco" -#: client/src/forms/Credentials.js:383 +#: client/src/forms/Credentials.js:384 msgid "v3 default%s - set to 'default'" msgstr "v3 default%s - establecer a 'default'" -#: client/src/forms/Credentials.js:384 +#: client/src/forms/Credentials.js:385 msgid "v3 multi-domain%s - your domain name" msgstr "v3 multi-domain%s - vuestro nombre de dominio" diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 069a7d47eb..ab2249c101 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -129,7 +129,7 @@ describe('parseStdoutService', () => { end_line: 11, stdout: "a\r\nb\r\nc..." }; - let expectedReturn = [[8, "a"],[9, "b"], [10,"c..."], [11, ""]]; + let expectedReturn = [[8, "a"],[9, "b"], [10,"c..."]]; let returnedEvent = parseStdoutService.getLineArr(mockEvent); @@ -204,7 +204,7 @@ describe('parseStdoutService', () => { var expectedString = `
collapse_icon_dom13
-
prettified_line
+
prettified_line
`; expect(returnedString).toBe(expectedString); });