# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
# Edgent download location configurations
#


generic_how_to_verify_location: 'https://www.apache.org/dyn/closer.cgi#verify'

edgent_dist_main_location: 'https://www.apache.org/dyn/closer.cgi/incubator/edgent'
edgent_keys_file_location: 'https://www.apache.org/dist/incubator/edgent/KEYS'

edgent_1-0-0_release_note: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/RELEASE_NOTES'
edgent_1-0-0_doc_location: 'https://edgent.incubator.apache.org/javadoc/r1.0.0/index.html'
edgent_1-0-0_dist_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz'
edgent_1-0-0_asc_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.asc'
edgent_1-0-0_md5_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.md5'
edgent_1-0-0_sha_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/apache-edgent-1.0.0-incubating-src.tgz.sha'
edgent_1-0-0_bin_dist_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/binaries/apache-edgent-1.0.0-incubating-bin.tgz'
edgent_1-0-0_bin_asc_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/binaries/apache-edgent-1.0.0-incubating-bin.tgz.asc'
edgent_1-0-0_bin_md5_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/binaries/apache-edgent-1.0.0-incubating-bin.tgz.md5'
edgent_1-0-0_bin_sha_location: 'https://archive.apache.org/dist/incubator/edgent/1.0.0-incubating/binaries/apache-edgent-1.0.0-incubating-bin.tgz.sha'
 
edgent_1-1-0_release_note: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/RELEASE_NOTES'
edgent_1-1-0_doc_location: 'https://edgent.incubator.apache.org/javadoc/r1.1.0/index.html'
edgent_1-1-0_dist_location: 'https://www.apache.org/dyn/closer.cgi/incubator/edgent/1.1.0-incubating'
edgent_1-1-0_asc_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/apache-edgent-1.1.0-incubating-src.tgz.asc'
edgent_1-1-0_md5_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/apache-edgent-1.1.0-incubating-src.tgz.md5'
edgent_1-1-0_sha_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/apache-edgent-1.1.0-incubating-src.tgz.sha'
edgent_1-1-0_bin_dist_location: 'https://www.apache.org/dyn/closer.cgi/incubator/edgent/1.1.0-incubating/binaries'
edgent_1-1-0_bin_asc_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/binaries/apache-edgent-1.1.0-incubating-bin.tgz.asc'
edgent_1-1-0_bin_md5_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/binaries/apache-edgent-1.1.0-incubating-bin.tgz.md5'
edgent_1-1-0_bin_sha_location: 'https://www.apache.org/dist/incubator/edgent/1.1.0-incubating/binaries/apache-edgent-1.1.0-incubating-bin.tgz.sha'
 
edgent_1-2-0_doc_location: '/javadoc/r1.2.0/index.html'
edgent_1-2-0_java_support_doc_location: 'https://github.com/apache/incubator-edgent/blob/edgent-1.2.0/JAVA_SUPPORT.md'
edgent_1-2-0_release_note: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/RELEASE_NOTES'
edgent_1-2-0_dist_location: 'https://www.apache.org/dyn/closer.cgi/incubator/edgent/1.2.0-incubating'
edgent_1-2-0_asc_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.tar.gz.asc'
edgent_1-2-0_md5_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.tar.gz.md5'
edgent_1-2-0_sha_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.tar.gz.sha512'
edgent_1-2-0_zip_asc_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.zip.asc'
edgent_1-2-0_zip_md5_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.zip.md5'
edgent_1-2-0_zip_sha_location: 'https://www.apache.org/dist/incubator/edgent/1.2.0-incubating/apache-edgent-1.2.0-incubating-source-release.zip.sha512'
