katello 3.5.0.rc1 → 3.5.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/containers/container.js +6 -6
- data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +2 -1
- data/app/assets/javascripts/katello/sync_management/sync_management.js +8 -6
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +23 -16
- data/app/controllers/katello/api/v2/api_controller.rb +7 -2
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +10 -2
- data/app/controllers/katello/api/v2/content_uploads_controller.rb +5 -5
- data/app/controllers/katello/api/v2/content_view_components_controller.rb +9 -9
- data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +14 -16
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +8 -8
- data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +7 -7
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +12 -12
- data/app/controllers/katello/api/v2/content_views_controller.rb +5 -5
- data/app/controllers/katello/api/v2/errata_controller.rb +2 -2
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +2 -2
- data/app/controllers/katello/api/v2/host_collections_controller.rb +7 -7
- data/app/controllers/katello/api/v2/host_errata_controller.rb +4 -4
- data/app/controllers/katello/api/v2/host_packages_controller.rb +5 -5
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +9 -4
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +1 -1
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +9 -1
- data/app/controllers/katello/api/v2/organizations_controller.rb +17 -3
- data/app/controllers/katello/api/v2/packages_controller.rb +2 -2
- data/app/controllers/katello/api/v2/products_controller.rb +3 -3
- data/app/controllers/katello/api/v2/repositories_controller.rb +11 -11
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -10
- data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +3 -3
- data/app/helpers/katello/providers_helper.rb +4 -1
- data/app/lib/actions/candlepin/abstract.rb +1 -0
- data/app/lib/actions/katello/host/hypervisors_update.rb +1 -0
- data/app/lib/actions/katello/host/update_release_version.rb +29 -0
- data/app/lib/actions/katello/product/create.rb +3 -6
- data/app/lib/actions/katello/product/reindex_subscriptions.rb +1 -1
- data/app/lib/actions/katello/repository/scheduled_sync.rb +15 -0
- data/app/lib/actions/katello/repository/upload_files.rb +4 -0
- data/app/lib/actions/middleware/keep_session_id.rb +29 -0
- data/app/lib/katello/resources/candlepin.rb +22 -5
- data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +30 -0
- data/app/models/katello/activation_key.rb +3 -33
- data/app/models/katello/candlepin/product_content.rb +1 -14
- data/app/models/katello/concerns/content_facet_host_extensions.rb +5 -1
- data/app/models/katello/concerns/content_view_filter_rule_common.rb +13 -0
- data/app/models/katello/concerns/hostgroup_extensions.rb +1 -0
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +2 -1
- data/app/models/katello/content_view_docker_filter_rule.rb +2 -1
- data/app/models/katello/content_view_erratum_filter_rule.rb +2 -1
- data/app/models/katello/content_view_package_filter_rule.rb +2 -1
- data/app/models/katello/content_view_package_group_filter_rule.rb +2 -1
- data/app/models/katello/erratum.rb +4 -5
- data/app/models/katello/glue/candlepin/owner.rb +32 -0
- data/app/models/katello/glue/pulp/repos.rb +1 -1
- data/app/models/katello/host/subscription_facet.rb +16 -0
- data/app/models/katello/repository.rb +2 -2
- data/app/models/katello/subscription.rb +4 -1
- data/app/models/katello/subscription_status.rb +8 -4
- data/app/presenters/katello/product_content_presenter.rb +7 -2
- data/app/services/katello/candlepin/consumer.rb +0 -28
- data/app/services/katello/product_content_finder.rb +37 -0
- data/app/views/foreman/smart_proxies/_content_sync.html.erb +0 -2
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +34 -0
- data/app/views/katello/api/v2/activation_keys/index.json.rabl +4 -1
- data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +3 -3
- data/app/views/katello/api/v2/activation_keys/show.json.rabl +2 -38
- data/app/views/katello/api/v2/common/releases.json.rabl +7 -0
- data/config/routes/api/v2.rb +1 -0
- data/config/routes/overrides.rb +1 -0
- data/db/migrate/20171010170443_add_index_to_katello_content_facet_errata.rb +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-key.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-host-collections.controller.js +8 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-copy.controller.js +3 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +7 -10
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-host-collections.controller.js +7 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections-table.html +1 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +7 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsules/capsule.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/api-error-handler.service.js +6 -16
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-environment-modal.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-packages-modal.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-release-version-modal.controller.js +62 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-repository-sets-modal.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-subscriptions-modal.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-release-version-modal.html +56 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-modal-helper.service.js +11 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +10 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +6 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +3 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-base-subscriptions.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +8 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +10 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-repository-sets.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-view.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +11 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-modules.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-manifests/docker-manifest.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-details.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-details.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +5 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environment.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/new-environment.controller.js +3 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/new-environment.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +9 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/erratum.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/file.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-details-info.controller.js +6 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-details.controller.js +4 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/gpg-key.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/new/new-gpg-key.controller.js +6 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-copy.controller.js +3 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-details.controller.js +13 -22
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +6 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-info.html +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collection.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-erratum.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-package.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-subscription.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-traces.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/organization.factory.js +7 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branch.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/package-groups/package-group.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/package.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-sync-plan-modal.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-details-info.controller.js +5 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-details.controller.js +6 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +15 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-advanced-sync.controller.js +6 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +9 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +7 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-files.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-ostree-branches.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-packages.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-puppet-modules.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +5 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +0 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-info.html +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +4 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +5 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-base.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/product-form.controller.js +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/product.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +7 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/puppet-module.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-module.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/repository-set.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/settings/setting.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/subscription-details.controller.js +0 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-details.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/manifest-import.controller.js +9 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/views/manifest-import.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscriptions.factory.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-add-products.controller.js +6 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +5 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details.controller.js +5 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-products.controller.js +8 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-products.html +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/new/new-sync-plan.controller.js +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plan.factory.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/task.factory.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks.module.js +3 -3
- data/lib/katello/permission_creator.rb +3 -2
- data/lib/katello/permissions/host_permissions.rb +1 -0
- data/lib/katello/permissions/organization_permissions.rb +1 -0
- data/lib/katello/tasks/clean_installed_packages.rake +20 -3
- data/lib/katello/version.rb +1 -1
- metadata +17 -6
@@ -1,5 +1,4 @@
|
|
1
1
|
<span page-title ng-model="product">{{ 'Product information for:' | translate }} {{ product.name }}</span>
|
2
|
-
<div bst-alerts success-messages="successMessages" error-messages="errorMessages"></div>
|
3
2
|
|
4
3
|
<div data-extend-template="layouts/two-column-details.html">
|
5
4
|
<div data-block="left-column">
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*
|
5
5
|
* @requires $scope
|
6
6
|
* @requires $q
|
7
|
+
* @requires Notification
|
7
8
|
* @requires CurrentOrganization
|
8
9
|
* @requires Product
|
9
10
|
* @requires Repository
|
@@ -17,11 +18,8 @@
|
|
17
18
|
* repository discovery.
|
18
19
|
*/
|
19
20
|
angular.module('Bastion.products').controller('DiscoveryCreateController',
|
20
|
-
['$scope', '$q', 'CurrentOrganization', 'Product', 'Repository', 'GPGKey', 'FormUtils', 'DiscoveryRepositories', 'translate', 'ApiErrorHandler',
|
21
|
-
function ($scope, $q, CurrentOrganization, Product, Repository, GPGKey, FormUtils, DiscoveryRepositories, translate, ApiErrorHandler) {
|
22
|
-
|
23
|
-
$scope.errorMessages = [];
|
24
|
-
$scope.successMessages = [];
|
21
|
+
['$scope', '$q', 'Notification', 'CurrentOrganization', 'Product', 'Repository', 'GPGKey', 'FormUtils', 'DiscoveryRepositories', 'translate', 'ApiErrorHandler',
|
22
|
+
function ($scope, $q, Notification, CurrentOrganization, Product, Repository, GPGKey, FormUtils, DiscoveryRepositories, translate, ApiErrorHandler) {
|
25
23
|
|
26
24
|
$scope.table = {
|
27
25
|
rows: DiscoveryRepositories.getRows(),
|
@@ -100,7 +98,7 @@ angular.module('Bastion.products').controller('DiscoveryCreateController',
|
|
100
98
|
function productCreateError(response) {
|
101
99
|
$scope.createRepoChoices.creating = false;
|
102
100
|
angular.forEach(response.data.errors, function (errors, field) {
|
103
|
-
|
101
|
+
Notification.setErrorMessage(translate('An error occurred while creating the Product: %s').replace('%s', field + ' ' + errors));
|
104
102
|
if (!angular.isUndefined($scope.productForm[field])) {
|
105
103
|
$scope.productForm[field].$error.messages = errors;
|
106
104
|
}
|
@@ -6,6 +6,7 @@
|
|
6
6
|
* @requires $q
|
7
7
|
* @requires $timeout
|
8
8
|
* @requires $http
|
9
|
+
* @requires Notification
|
9
10
|
* @requires Task
|
10
11
|
* @requires Organization
|
11
12
|
* @requires CurrentOrganization
|
@@ -16,13 +17,10 @@
|
|
16
17
|
* Provides the functionality for the repo discovery action pane.
|
17
18
|
*/
|
18
19
|
angular.module('Bastion.products').controller('DiscoveryController',
|
19
|
-
['$scope', '$q', '$timeout', '$http', 'Task', 'Organization', 'CurrentOrganization', 'DiscoveryRepositories', 'translate',
|
20
|
-
function ($scope, $q, $timeout, $http, Task, Organization, CurrentOrganization, DiscoveryRepositories, translate) {
|
20
|
+
['$scope', '$q', '$timeout', '$http', 'Notification', 'Task', 'Organization', 'CurrentOrganization', 'DiscoveryRepositories', 'translate',
|
21
|
+
function ($scope, $q, $timeout, $http, Notification, Task, Organization, CurrentOrganization, DiscoveryRepositories, translate) {
|
21
22
|
var transformRows, setDiscoveryDetails;
|
22
23
|
|
23
|
-
$scope.successMessages = [];
|
24
|
-
$scope.errorMessages = [];
|
25
|
-
|
26
24
|
$scope.discovery = {
|
27
25
|
url: '',
|
28
26
|
contentType: 'yum'
|
@@ -119,7 +117,7 @@ angular.module('Bastion.products').controller('DiscoveryController',
|
|
119
117
|
$scope.discovery.working = false;
|
120
118
|
Task.unregisterSearch($scope.taskSearchId);
|
121
119
|
if (task.result === "error") {
|
122
|
-
|
120
|
+
Notification.setErrorMessage(translate("Discovery failed. Error: %s").replace('%s', task.humanized.errors[0]));
|
123
121
|
}
|
124
122
|
}
|
125
123
|
}
|
@@ -137,8 +135,7 @@ angular.module('Bastion.products').controller('DiscoveryController',
|
|
137
135
|
'upstream_username': $scope.discovery.upstreamUsername,
|
138
136
|
'upstream_password': $scope.discovery.upstreamPassword
|
139
137
|
};
|
140
|
-
|
141
|
-
$scope.errorMessages = [];
|
138
|
+
|
142
139
|
Organization.repoDiscover(params, function (task) {
|
143
140
|
$scope.taskSearchId = Task.registerSearch({ 'type': 'task', 'task_id': task.id }, $scope.updateTask);
|
144
141
|
});
|
@@ -1,6 +1,4 @@
|
|
1
1
|
<div data-extend-template="layouts/details-page-with-breadcrumbs.html">
|
2
|
-
<div ng-show="page.error" bst-alerts success-messages="successMessages" error-messages="errorMessages"></div>
|
3
|
-
|
4
2
|
<header data-block="header">
|
5
3
|
<h2 translate>Repository Discovery</h2>
|
6
4
|
</header>
|
@@ -17,8 +17,8 @@
|
|
17
17
|
* within the table.
|
18
18
|
*/
|
19
19
|
angular.module('Bastion.products').controller('ProductFormController',
|
20
|
-
['$scope', '$q', '$uibModal', 'Product', 'GPGKey', 'SyncPlan', 'FormUtils', '
|
21
|
-
function ($scope, $q, $uibModal, Product, GPGKey, SyncPlan, FormUtils,
|
20
|
+
['$scope', '$q', '$uibModal', 'Product', 'GPGKey', 'SyncPlan', 'FormUtils', 'Notification',
|
21
|
+
function ($scope, $q, $uibModal, Product, GPGKey, SyncPlan, FormUtils, Notification) {
|
22
22
|
|
23
23
|
function fetchGpgKeys() {
|
24
24
|
return GPGKey.queryUnpaged(function (gpgKeys) {
|
@@ -43,7 +43,7 @@ angular.module('Bastion.products').controller('ProductFormController',
|
|
43
43
|
$scope.productForm[field].$setValidity('server', false);
|
44
44
|
$scope.productForm[field].$error.messages = errors;
|
45
45
|
} else {
|
46
|
-
|
46
|
+
Notification.setErrorMessage("An error occurred while saving the Product: " + field + " " + errors);
|
47
47
|
}
|
48
48
|
});
|
49
49
|
}
|
data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/product.factory.js
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
angular.module('Bastion.products').factory('Product',
|
11
11
|
['BastionResource', function (BastionResource) {
|
12
12
|
|
13
|
-
return BastionResource('
|
13
|
+
return BastionResource('katello/api/v2/products/:id/:action', {id: '@id'}, {
|
14
14
|
update: { method: 'PUT'},
|
15
15
|
sync: { method: 'POST', params: { action: 'sync' }},
|
16
16
|
updateSyncPlan: { method: 'POST', params: { action: 'sync_plan' }},
|
data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js
CHANGED
@@ -19,8 +19,8 @@
|
|
19
19
|
* within the table.
|
20
20
|
*/
|
21
21
|
angular.module('Bastion.products').controller('ProductsController',
|
22
|
-
['$scope', '$state', '$sce', '$location', '$uibModal', 'translate', 'Nutupane', 'Product', 'ProductBulkAction', 'CurrentOrganization', '
|
23
|
-
function ($scope, $state, $sce, $location, $uibModal, translate, Nutupane, Product, ProductBulkAction, CurrentOrganization,
|
22
|
+
['$scope', '$state', '$sce', '$location', '$uibModal', 'translate', 'Nutupane', 'Product', 'ProductBulkAction', 'CurrentOrganization', 'Notification',
|
23
|
+
function ($scope, $state, $sce, $location, $uibModal, translate, Nutupane, Product, ProductBulkAction, CurrentOrganization, Notification) {
|
24
24
|
var nutupane, taskUrl, taskLink, getBulkParams, bulkError, params;
|
25
25
|
|
26
26
|
getBulkParams = function () {
|
@@ -32,7 +32,7 @@ angular.module('Bastion.products').controller('ProductsController',
|
|
32
32
|
|
33
33
|
bulkError = function (response) {
|
34
34
|
angular.forEach(response.data.errors, function(message) {
|
35
|
-
|
35
|
+
Notification.setErrorMessage(translate("An error occurred: ") + message);
|
36
36
|
});
|
37
37
|
|
38
38
|
nutupane.refresh();
|
@@ -58,7 +58,7 @@ angular.module('Bastion.products').controller('ProductsController',
|
|
58
58
|
taskUrl = $scope.taskUrl(taskId);
|
59
59
|
taskLink = $sce.trustAsHtml("<a href=" + taskUrl + ">here</a>");
|
60
60
|
message = translate("Product delete operation has been initiated in the background. Click %s to monitor the progress.");
|
61
|
-
|
61
|
+
Notification.setRenderedSuccessMessage(message.replace("%", taskLink));
|
62
62
|
});
|
63
63
|
|
64
64
|
$scope.unsetProductDeletionTaskId = function () {
|
@@ -89,7 +89,7 @@ angular.module('Bastion.products').controller('ProductsController',
|
|
89
89
|
message = translate("Product sync has been initiated in the background. " +
|
90
90
|
"Click %s to monitor the progress.");
|
91
91
|
|
92
|
-
|
92
|
+
Notification.setRenderedSuccessMessage(message.replace('%s', taskLink));
|
93
93
|
};
|
94
94
|
|
95
95
|
ProductBulkAction.syncProducts(getBulkParams(), success, bulkError);
|
@@ -130,11 +130,11 @@ angular.module('Bastion.products').controller('ProductsController',
|
|
130
130
|
|
131
131
|
success = function (response) {
|
132
132
|
angular.forEach(response.displayMessages.success, function(message) {
|
133
|
-
|
133
|
+
Notification.setSuccessMessage(message);
|
134
134
|
});
|
135
135
|
|
136
136
|
angular.forEach(response.displayMessages.error, function(message) {
|
137
|
-
|
137
|
+
Notification.setErrorMessage(message);
|
138
138
|
});
|
139
139
|
|
140
140
|
nutupane.refresh();
|
@@ -8,9 +8,6 @@
|
|
8
8
|
* Provides the functionality for the puppet modules details action pane.
|
9
9
|
*/
|
10
10
|
function PuppetModuleController($scope, PuppetModule, ApiErrorHandler) {
|
11
|
-
$scope.successMessages = [];
|
12
|
-
$scope.errorMessages = [];
|
13
|
-
|
14
11
|
$scope.panel = {
|
15
12
|
error: false,
|
16
13
|
loading: true
|
@@ -10,7 +10,7 @@
|
|
10
10
|
*/
|
11
11
|
function PuppetModule(BastionResource) {
|
12
12
|
|
13
|
-
return BastionResource('
|
13
|
+
return BastionResource('katello/api/v2/puppet_modules/:id',
|
14
14
|
{'id': '@id'},
|
15
15
|
{
|
16
16
|
autocomplete: {method: 'GET', isArray: true, params: {id: 'auto_complete_search'}}
|
@@ -9,7 +9,7 @@
|
|
9
9
|
*/
|
10
10
|
angular.module('Bastion.repository-sets').factory('RepositorySet',
|
11
11
|
['BastionResource', function (BastionResource) {
|
12
|
-
return BastionResource('
|
12
|
+
return BastionResource('katello/api/v2/repository_sets/:id/:action', {id: '@id'}, {
|
13
13
|
});
|
14
14
|
|
15
15
|
}]
|
@@ -13,9 +13,6 @@
|
|
13
13
|
angular.module('Bastion.subscriptions').controller('SubscriptionDetailsController',
|
14
14
|
['$scope', 'translate', 'Subscription', 'ApiErrorHandler',
|
15
15
|
function ($scope, translate, Subscription, ApiErrorHandler) {
|
16
|
-
$scope.successMessages = [];
|
17
|
-
$scope.errorMessages = [];
|
18
|
-
|
19
16
|
$scope.panel = {
|
20
17
|
error: false,
|
21
18
|
loading: true
|
@@ -14,8 +14,8 @@
|
|
14
14
|
* Controls the import of a manifest.
|
15
15
|
*/
|
16
16
|
angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
17
|
-
['$scope', '$q', 'translate', 'CurrentOrganization', 'Organization', 'Task', 'Subscription', '
|
18
|
-
function ($scope, $q, translate, CurrentOrganization, Organization, Task, Subscription,
|
17
|
+
['$scope', '$q', 'translate', 'CurrentOrganization', 'Organization', 'Task', 'Subscription', 'Notification',
|
18
|
+
function ($scope, $q, translate, CurrentOrganization, Organization, Task, Subscription, Notification) {
|
19
19
|
|
20
20
|
function buildManifestLink(upstream) {
|
21
21
|
var url = upstream.webUrl,
|
@@ -50,7 +50,7 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
50
50
|
|
51
51
|
$scope.uploadErrorMessages = [];
|
52
52
|
$scope.progress = {uploading: false};
|
53
|
-
$scope.uploadURL = '
|
53
|
+
$scope.uploadURL = 'katello/api/v2/organizations/' + CurrentOrganization + '/subscriptions/upload';
|
54
54
|
$scope.organization = Organization.get({id: CurrentOrganization});
|
55
55
|
|
56
56
|
$q.all([$scope.organization.$promise]).then(function () {
|
@@ -80,7 +80,7 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
80
80
|
if (task.humanized.errors.length > 0) {
|
81
81
|
errorMessageWithDetails += ' ' + task.humanized.errors.join(' ');
|
82
82
|
}
|
83
|
-
|
83
|
+
Notification.setErrorMessage(errorMessageWithDetails);
|
84
84
|
$scope.histories = Subscription.manifestHistory();
|
85
85
|
}
|
86
86
|
};
|
@@ -92,7 +92,7 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
92
92
|
$scope.unregisterSearch();
|
93
93
|
if ($scope.task.result === 'success') {
|
94
94
|
$scope.refreshOrganizationInfo();
|
95
|
-
|
95
|
+
Notification.setSuccessMessage(translate("Manifest successfully imported."));
|
96
96
|
} else {
|
97
97
|
$scope.handleTaskErrors(task, translate("Error importing manifest."));
|
98
98
|
}
|
@@ -117,7 +117,7 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
117
117
|
$scope.unregisterSearch();
|
118
118
|
if ($scope.task.result === 'success') {
|
119
119
|
$scope.saveSuccess = true;
|
120
|
-
|
120
|
+
Notification.setSuccessMessage(translate("Manifest successfully deleted."));
|
121
121
|
$scope.refreshOrganizationInfo();
|
122
122
|
} else {
|
123
123
|
$scope.handleTaskErrors(task, translate("Error deleting manifest."));
|
@@ -151,7 +151,7 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
151
151
|
$scope.unregisterSearch();
|
152
152
|
if ($scope.task.result === 'success') {
|
153
153
|
$scope.saveSuccess = true;
|
154
|
-
|
154
|
+
Notification.setSuccessMessage(translate("Manifest successfully refreshed."));
|
155
155
|
$scope.refreshOrganizationInfo();
|
156
156
|
} else {
|
157
157
|
$scope.handleTaskErrors(task, translate("Error refreshing manifest."));
|
@@ -175,11 +175,11 @@ angular.module('Bastion.subscriptions').controller('ManifestImportController',
|
|
175
175
|
});
|
176
176
|
|
177
177
|
deferred = Organization.update(whitelistedOrganizationObject, function () {
|
178
|
-
|
178
|
+
Notification.setSuccessMessage(translate('Repository URL updated'));
|
179
179
|
$scope.refreshOrganizationInfo();
|
180
180
|
}, function (response) {
|
181
181
|
angular.forEach(response.data.error['full_messages'], function (message) {
|
182
|
-
|
182
|
+
Notification.setErrorMessage(translate("An error occurred saving the URL: ") + message);
|
183
183
|
});
|
184
184
|
});
|
185
185
|
|
@@ -11,25 +11,25 @@
|
|
11
11
|
angular.module('Bastion.subscriptions').factory('Subscription', ['BastionResource', 'CurrentOrganization',
|
12
12
|
|
13
13
|
function (BastionResource, CurrentOrganization) {
|
14
|
-
return BastionResource('
|
14
|
+
return BastionResource('katello/api/v2/organizations/:org/subscriptions/:id/:action',
|
15
15
|
{org: CurrentOrganization, id: '@id'},
|
16
16
|
{
|
17
17
|
autocomplete: {method: 'GET', isArray: true, params: {id: 'auto_complete_search'}},
|
18
18
|
deleteManifest: {
|
19
19
|
method: 'POST',
|
20
|
-
url: '
|
20
|
+
url: 'katello/api/v2/organizations/:org/subscriptions/delete_manifest',
|
21
21
|
params: {'org': CurrentOrganization}
|
22
22
|
},
|
23
23
|
|
24
24
|
refreshManifest: {
|
25
25
|
method: 'PUT',
|
26
|
-
url: '
|
26
|
+
url: 'katello/api/v2/organizations/:org/subscriptions/refresh_manifest',
|
27
27
|
params: {'org': CurrentOrganization}
|
28
28
|
},
|
29
29
|
|
30
30
|
manifestHistory: {
|
31
31
|
method: 'GET',
|
32
|
-
url: '
|
32
|
+
url: 'katello/api/v2/organizations/:org/subscriptions/:action',
|
33
33
|
params: {action: 'manifest_history'},
|
34
34
|
isArray: true
|
35
35
|
}
|
@@ -10,18 +10,16 @@
|
|
10
10
|
* @requires Product
|
11
11
|
* @requires CurrentOrganization
|
12
12
|
* @requires Nutupane
|
13
|
+
* @requires Notification
|
13
14
|
*
|
14
15
|
* @description
|
15
16
|
* Provides the functionality for adding products to a sync plan.
|
16
17
|
*/
|
17
18
|
angular.module('Bastion.sync-plans').controller('SyncPlanAddProductsController',
|
18
|
-
['$scope', '$q', '$location', 'translate', 'SyncPlan', 'Product', 'CurrentOrganization', 'Nutupane',
|
19
|
-
function ($scope, $q, $location, translate, SyncPlan, Product, CurrentOrganization, Nutupane) {
|
19
|
+
['$scope', '$q', '$location', 'translate', 'SyncPlan', 'Product', 'CurrentOrganization', 'Nutupane', 'Notification',
|
20
|
+
function ($scope, $q, $location, translate, SyncPlan, Product, CurrentOrganization, Nutupane, Notification) {
|
20
21
|
var productsNutupane, params;
|
21
22
|
|
22
|
-
$scope.successMessages = [];
|
23
|
-
$scope.errorMessages = [];
|
24
|
-
|
25
23
|
params = {
|
26
24
|
'search': $location.search().search || "",
|
27
25
|
'sort_by': 'name',
|
@@ -48,8 +46,8 @@ angular.module('Bastion.sync-plans').controller('SyncPlanAddProductsController',
|
|
48
46
|
};
|
49
47
|
|
50
48
|
success = function (response) {
|
51
|
-
|
52
|
-
.replace('%x', $scope.table.numSelected).replace('%y', $scope.syncPlan.name)
|
49
|
+
Notification.setSuccessMessage(translate('Added %x products to sync plan "%y".')
|
50
|
+
.replace('%x', $scope.table.numSelected).replace('%y', $scope.syncPlan.name));
|
53
51
|
$scope.table.working = false;
|
54
52
|
$scope.table.selectAll(false);
|
55
53
|
productsNutupane.refresh();
|
@@ -59,7 +57,7 @@ angular.module('Bastion.sync-plans').controller('SyncPlanAddProductsController',
|
|
59
57
|
|
60
58
|
error = function (response) {
|
61
59
|
deferred.reject(response.data.errors);
|
62
|
-
|
60
|
+
Notification.setErrorMessage(response.data.errors.base);
|
63
61
|
$scope.table.working = false;
|
64
62
|
};
|
65
63
|
|
@@ -7,15 +7,14 @@
|
|
7
7
|
* @requires translate
|
8
8
|
* @requires SyncPlan
|
9
9
|
* @requires MenuExpander
|
10
|
+
* @requires Notification
|
10
11
|
*
|
11
12
|
* @description
|
12
13
|
* Provides the functionality for the sync plan details action pane.
|
13
14
|
*/
|
14
15
|
angular.module('Bastion.sync-plans').controller('SyncPlanDetailsInfoController',
|
15
|
-
['$scope', '$q', 'translate', 'SyncPlan', 'MenuExpander',
|
16
|
-
function ($scope, $q, translate, SyncPlan, MenuExpander) {
|
17
|
-
$scope.successMessages = [];
|
18
|
-
$scope.errorMessages = [];
|
16
|
+
['$scope', '$q', 'translate', 'SyncPlan', 'MenuExpander', 'Notification',
|
17
|
+
function ($scope, $q, translate, SyncPlan, MenuExpander, Notification) {
|
19
18
|
$scope.intervals = [
|
20
19
|
{id: 'hourly', value: translate('hourly')},
|
21
20
|
{id: 'daily', value: translate('daily')},
|
@@ -49,14 +48,14 @@ angular.module('Bastion.sync-plans').controller('SyncPlanDetailsInfoController',
|
|
49
48
|
syncPlan.$update(function (response) {
|
50
49
|
updateSyncPlan(syncPlan);
|
51
50
|
deferred.resolve(response);
|
52
|
-
|
51
|
+
Notification.setSuccessMessage(translate('Sync Plan Saved'));
|
53
52
|
}, function (response) {
|
54
53
|
deferred.reject(response);
|
55
54
|
angular.forEach(response.data.errors, function (errorMessage, key) {
|
56
55
|
if (angular.isString(key)) {
|
57
56
|
errorMessage = [key, errorMessage].join(' ');
|
58
57
|
}
|
59
|
-
|
58
|
+
Notification.setErrorMessage(translate("An error occurred saving the Sync Plan: ") + errorMessage);
|
60
59
|
});
|
61
60
|
});
|
62
61
|
|
@@ -7,14 +7,14 @@
|
|
7
7
|
* @requires translate
|
8
8
|
* @requires SyncPlan
|
9
9
|
* @requires ApiErrorHandler
|
10
|
-
* @requires
|
10
|
+
* @requires Notification
|
11
11
|
*
|
12
12
|
* @description
|
13
13
|
* Provides the functionality for the sync plan details action pane.
|
14
14
|
*/
|
15
15
|
angular.module('Bastion.sync-plans').controller('SyncPlanDetailsController',
|
16
|
-
['$scope', '$state', 'translate', 'SyncPlan', 'ApiErrorHandler', '
|
17
|
-
function ($scope, $state, translate, SyncPlan, ApiErrorHandler,
|
16
|
+
['$scope', '$state', 'translate', 'SyncPlan', 'ApiErrorHandler', 'Notification',
|
17
|
+
function ($scope, $state, translate, SyncPlan, ApiErrorHandler, Notification) {
|
18
18
|
$scope.panel = {
|
19
19
|
error: false,
|
20
20
|
loading: true
|
@@ -35,13 +35,13 @@ angular.module('Bastion.sync-plans').controller('SyncPlanDetailsController',
|
|
35
35
|
SyncPlan.sync({id: $scope.$stateParams.syncPlanId}, function (task) {
|
36
36
|
$scope.task = task;
|
37
37
|
}, function (response) {
|
38
|
-
|
38
|
+
Notification.setErrorMessage(response.data.errors[0]);
|
39
39
|
});
|
40
40
|
};
|
41
41
|
|
42
42
|
$scope.removeSyncPlan = function (syncPlan) {
|
43
43
|
syncPlan.$remove(function () {
|
44
|
-
|
44
|
+
Notification.setSuccessMessage(translate('Sync Plan %s has been deleted.').replace('%s', syncPlan.name));
|
45
45
|
$scope.transitionTo('sync-plans');
|
46
46
|
});
|
47
47
|
};
|