Remove retired Qinling support

Qinling project is retiring in Wallaby cycle[1].
This commit removes the ansible roles of Qinling project
before its code is removed.

Needed-By: https://review.opendev.org/c/openstack/qinling/+/764521

[1] http://lists.openstack.org/pipermail/openstack-discuss/2020-November/018638.html

Change-Id: I6543bacff638b1649511f7e779807954c34ef570
This commit is contained in:
Ghanshyam Mann 2020-11-28 10:10:29 -06:00
parent 860c32de76
commit dafde93fe2
42 changed files with 8 additions and 816 deletions

View File

@ -66,7 +66,6 @@ Kolla-Ansible deploys containers for the following OpenStack projects:
- `Nova <https://docs.openstack.org/nova/latest/>`__ - `Nova <https://docs.openstack.org/nova/latest/>`__
- `Octavia <https://docs.openstack.org/octavia/latest/>`__ - `Octavia <https://docs.openstack.org/octavia/latest/>`__
- `Panko <https://docs.openstack.org/panko/latest/>`__ - `Panko <https://docs.openstack.org/panko/latest/>`__
- `Qinling <https://docs.openstack.org/qinling/latest/>`__
- `Rally <https://docs.openstack.org/rally/latest/>`__ - `Rally <https://docs.openstack.org/rally/latest/>`__
- `Sahara <https://docs.openstack.org/sahara/latest/>`__ - `Sahara <https://docs.openstack.org/sahara/latest/>`__
- `Searchlight <https://docs.openstack.org/searchlight/latest/>`__ - `Searchlight <https://docs.openstack.org/searchlight/latest/>`__

View File

@ -446,8 +446,6 @@ prometheus_blackbox_exporter_port: "9115"
qdrouterd_port: "31459" qdrouterd_port: "31459"
qinling_api_port: "7070"
rabbitmq_port: "{{ '5671' if rabbitmq_enable_tls | bool else '5672' }}" rabbitmq_port: "{{ '5671' if rabbitmq_enable_tls | bool else '5672' }}"
rabbitmq_management_port: "15672" rabbitmq_management_port: "15672"
rabbitmq_cluster_port: "25672" rabbitmq_cluster_port: "25672"
@ -617,7 +615,6 @@ enable_horizon_monasca: "{{ enable_monasca | bool }}"
enable_horizon_murano: "{{ enable_murano | bool }}" enable_horizon_murano: "{{ enable_murano | bool }}"
enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}" enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
enable_horizon_octavia: "{{ enable_octavia | bool }}" enable_horizon_octavia: "{{ enable_octavia | bool }}"
enable_horizon_qinling: "{{ enable_qinling | bool }}"
enable_horizon_sahara: "{{ enable_sahara | bool }}" enable_horizon_sahara: "{{ enable_sahara | bool }}"
enable_horizon_searchlight: "{{ enable_searchlight | bool }}" enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
enable_horizon_senlin: "{{ enable_senlin | bool }}" enable_horizon_senlin: "{{ enable_senlin | bool }}"
@ -674,7 +671,6 @@ enable_panko: "no"
enable_placement: "{{ enable_nova | bool or enable_zun | bool }}" enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
enable_prometheus: "no" enable_prometheus: "no"
enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}" enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
enable_qinling: "no"
enable_rally: "no" enable_rally: "no"
enable_redis: "no" enable_redis: "no"
enable_sahara: "no" enable_sahara: "no"
@ -1022,12 +1018,6 @@ enable_nova_horizon_policy_file: "{{ enable_nova }}"
horizon_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ horizon_tls_port if kolla_enable_tls_internal | bool else horizon_port }}" horizon_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ horizon_tls_port if kolla_enable_tls_internal | bool else horizon_port }}"
#################
# Qinling options
#################
# Configure qinling-engine certificates to authenticate with Kubernetes cluster.
qinling_kubernetes_certificates: "no"
################### ###################
# External Ceph options # External Ceph options
################### ###################

View File

@ -156,9 +156,6 @@ monitoring
[magnum:children] [magnum:children]
control control
[qinling:children]
control
[sahara:children] [sahara:children]
control control
@ -496,13 +493,6 @@ magnum
[magnum-conductor:children] [magnum-conductor:children]
magnum magnum
# Qinling
[qinling-api:children]
qinling
[qinling-engine:children]
qinling
# Solum # Solum
[solum-api:children] [solum-api:children]
solum solum

View File

@ -177,9 +177,6 @@ control
[magnum:children] [magnum:children]
control control
[qinling:children]
control
[sahara:children] [sahara:children]
control control
@ -504,13 +501,6 @@ magnum
[magnum-conductor:children] [magnum-conductor:children]
magnum magnum
# Qinling
[qinling-api:children]
qinling
[qinling-engine:children]
qinling
# Sahara # Sahara
[sahara-api:children] [sahara-api:children]
sahara sahara

View File

@ -162,8 +162,6 @@ fluentd_input_openstack_services:
enabled: "{{ enable_octavia | bool }}" enabled: "{{ enable_octavia | bool }}"
- name: panko - name: panko
enabled: "{{ enable_panko | bool }}" enabled: "{{ enable_panko | bool }}"
- name: qinling
enabled: "{{ enable_qinling | bool }}"
- name: rally - name: rally
enabled: "{{ enable_rally | bool }}" enabled: "{{ enable_rally | bool }}"
- name: sahara - name: sahara

View File

@ -209,7 +209,6 @@
- { name: "octavia", enabled: "{{ enable_octavia | bool }}" } - { name: "octavia", enabled: "{{ enable_octavia | bool }}" }
- { name: "outward-rabbitmq", enabled: "{{ enable_outward_rabbitmq | bool }}" } - { name: "outward-rabbitmq", enabled: "{{ enable_outward_rabbitmq | bool }}" }
- { name: "panko", enabled: "{{ enable_panko | bool }}" } - { name: "panko", enabled: "{{ enable_panko | bool }}" }
- { name: "qinling", enabled: "{{ enable_qinling | bool }}" }
- { name: "rabbitmq", enabled: "{{ enable_rabbitmq | bool }}" } - { name: "rabbitmq", enabled: "{{ enable_rabbitmq | bool }}" }
- { name: "rally", enabled: "{{ enable_rally | bool }}" } - { name: "rally", enabled: "{{ enable_rally | bool }}" }
- { name: "sahara", enabled: "{{ enable_sahara | bool }}" } - { name: "sahara", enabled: "{{ enable_sahara | bool }}" }

View File

@ -161,11 +161,6 @@
pattern ^(blazar-api|blazar-manager)$ pattern ^(blazar-api|blazar-manager)$
tag openstack_python tag openstack_python
</rule> </rule>
<rule>
key programname
pattern ^(qinling-engine|qinling-api)$
tag openstack_python
</rule>
<rule> <rule>
key programname key programname
pattern ^(monasca-api|monasca-notification|monasca-persister|agent-collector|agent-forwarder|agent-statsd)$ pattern ^(monasca-api|monasca-notification|monasca-persister|agent-collector|agent-forwarder|agent-statsd)$

View File

@ -1,3 +0,0 @@
"/var/log/kolla/qinling/*.log"
{
}

View File

@ -729,19 +729,6 @@
- haproxy_stat.find('panko_api') == -1 - haproxy_stat.find('panko_api') == -1
- haproxy_vip_prechecks - haproxy_vip_prechecks
- name: Checking free port for Qinling API HAProxy
wait_for:
host: "{{ kolla_internal_vip_address }}"
port: "{{ qinling_api_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- enable_qinling | bool
- inventory_hostname in groups['haproxy']
- haproxy_stat.find('qinling_api') == -1
- haproxy_vip_prechecks
- name: Checking free port for RabbitMQ Management HAProxy - name: Checking free port for RabbitMQ Management HAProxy
wait_for: wait_for:
host: "{{ kolla_internal_vip_address }}" host: "{{ kolla_internal_vip_address }}"

View File

@ -23,7 +23,6 @@ horizon_services:
ENABLE_MURANO: "{{ 'yes' if enable_horizon_murano | bool else 'no' }}" ENABLE_MURANO: "{{ 'yes' if enable_horizon_murano | bool else 'no' }}"
ENABLE_NEUTRON_VPNAAS: "{{ 'yes' if enable_horizon_neutron_vpnaas | bool else 'no' }}" ENABLE_NEUTRON_VPNAAS: "{{ 'yes' if enable_horizon_neutron_vpnaas | bool else 'no' }}"
ENABLE_OCTAVIA: "{{ 'yes' if enable_horizon_octavia | bool else 'no' }}" ENABLE_OCTAVIA: "{{ 'yes' if enable_horizon_octavia | bool else 'no' }}"
ENABLE_QINLING: "{{ 'yes' if enable_horizon_qinling | bool else 'no' }}"
ENABLE_SAHARA: "{{ 'yes' if enable_horizon_sahara | bool else 'no' }}" ENABLE_SAHARA: "{{ 'yes' if enable_horizon_sahara | bool else 'no' }}"
ENABLE_SEARCHLIGHT: "{{ 'yes' if enable_horizon_searchlight | bool else 'no' }}" ENABLE_SEARCHLIGHT: "{{ 'yes' if enable_horizon_searchlight | bool else 'no' }}"
ENABLE_SENLIN: "{{ 'yes' if enable_horizon_senlin | bool else 'no' }}" ENABLE_SENLIN: "{{ 'yes' if enable_horizon_senlin | bool else 'no' }}"

View File

@ -40,7 +40,6 @@
- { name: "neutron", enabled: "{{ enable_neutron_horizon_policy_file }}" } - { name: "neutron", enabled: "{{ enable_neutron_horizon_policy_file }}" }
- { name: "nova", enabled: "{{ enable_nova_horizon_policy_file }}" } - { name: "nova", enabled: "{{ enable_nova_horizon_policy_file }}" }
- { name: "octavia", enabled: "{{ enable_horizon_octavia }}" } - { name: "octavia", enabled: "{{ enable_horizon_octavia }}" }
- { name: "qinling", enabled: "{{ enable_horizon_qinling }}" }
- { name: "sahara", enabled: "{{ enable_horizon_sahara }}" } - { name: "sahara", enabled: "{{ enable_horizon_sahara }}" }
- { name: "searchlight", enabled: "{{ enable_horizon_searchlight }}" } - { name: "searchlight", enabled: "{{ enable_horizon_searchlight }}" }
- { name: "senlin", enabled: "{{ enable_horizon_senlin }}" } - { name: "senlin", enabled: "{{ enable_horizon_senlin }}" }

View File

@ -1,113 +0,0 @@
---
project_name: "qinling"
qinling_services:
qinling-api:
container_name: qinling_api
group: qinling-api
enabled: true
image: "{{ qinling_api_image_full }}"
volumes: "{{ qinling_api_default_volumes + qinling_api_extra_volumes }}"
dimensions: "{{ qinling_api_dimensions }}"
haproxy:
qinling_api:
enabled: "{{ enable_qinling }}"
mode: "http"
external: false
port: "{{ qinling_api_port }}"
qinling_api_external:
enabled: "{{ enable_qinling }}"
mode: "http"
external: true
port: "{{ qinling_api_port }}"
qinling-engine:
container_name: qinling_engine
group: qinling-engine
enabled: true
image: "{{ qinling_engine_image_full }}"
volumes: "{{ qinling_engine_default_volumes + qinling_engine_extra_volumes }}"
dimensions: "{{ qinling_engine_dimensions }}"
####################
# Database
####################
qinling_database_name: "qinling"
qinling_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}qinling{% endif %}"
qinling_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
####################
# Docker
####################
qinling_install_type: "{{ kolla_install_type }}"
qinling_tag: "{{ openstack_tag }}"
qinling_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ qinling_install_type }}-qinling-api"
qinling_api_tag: "{{ qinling_tag }}"
qinling_api_image_full: "{{ qinling_api_image }}:{{ qinling_api_tag }}"
qinling_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ qinling_install_type }}-qinling-engine"
qinling_engine_tag: "{{ qinling_tag }}"
qinling_engine_image_full: "{{ qinling_engine_image }}:{{ qinling_engine_tag }}"
qinling_api_dimensions: "{{ default_container_dimensions }}"
qinling_engine_dimensions: "{{ default_container_dimensions }}"
qinling_api_default_volumes:
- "{{ node_config_directory }}/qinling-api/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
- "{{ kolla_dev_repos_directory ~ '/qinling/qinling:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/qinling' if qinling_dev_mode | bool else '' }}"
- "kolla_logs:/var/log/kolla/"
qinling_engine_default_volumes:
- "{{ node_config_directory }}/qinling-engine/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
- "qinling:/var/lib/qinling/"
- "{{ kolla_dev_repos_directory ~ '/qinling/qinling:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/qinling' if qinling_dev_mode | bool else '' }}"
- "kolla_logs:/var/log/kolla/"
qinling_extra_volumes: "{{ default_extra_volumes }}"
qinling_api_extra_volumes: "{{ qinling_extra_volumes }}"
qinling_engine_extra_volumes: "{{ qinling_extra_volumes }}"
####################
# OpenStack
####################
qinling_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
qinling_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
qinling_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
qinling_logging_debug: "{{ openstack_logging_debug }}"
qinling_keystone_user: "qinling"
openstack_qinling_auth: "{{ openstack_auth }}"
####################
# Kolla
####################
qinling_git_repository: "{{ kolla_dev_repos_git }}/{{ project_name }}"
qinling_dev_repos_pull: "{{ kolla_dev_repos_pull }}"
qinling_dev_mode: "{{ kolla_dev_mode }}"
qinling_source_version: "{{ kolla_source_version }}"
####################
# Keystone
####################
qinling_ks_services:
- name: "qinling"
type: "function-engine"
description: "Function Service"
endpoints:
- {'interface': 'admin', 'url': '{{ qinling_admin_endpoint }}'}
- {'interface': 'internal', 'url': '{{ qinling_internal_endpoint }}'}
- {'interface': 'public', 'url': '{{ qinling_public_endpoint }}'}
qinling_ks_users:
- project: "service"
user: "{{ qinling_keystone_user }}"
password: "{{ qinling_keystone_password }}"
role: "admin"

View File

@ -1,30 +0,0 @@
---
- name: Restart qinling-api container
vars:
service_name: "qinling-api"
service: "{{ qinling_services[service_name] }}"
become: true
kolla_docker:
action: "recreate_or_restart_container"
common_options: "{{ docker_common_options }}"
name: "{{ service.container_name }}"
image: "{{ service.image }}"
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
dimensions: "{{ service.dimensions }}"
when:
- kolla_action != "config"
- name: Restart qinling-engine container
vars:
service_name: "qinling-engine"
service: "{{ qinling_services[service_name] }}"
become: true
kolla_docker:
action: "recreate_or_restart_container"
common_options: "{{ docker_common_options }}"
name: "{{ service.container_name }}"
image: "{{ service.image }}"
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
dimensions: "{{ service.dimensions }}"
when:
- kolla_action != "config"

View File

@ -1,36 +0,0 @@
---
- name: Creating Qinling database
become: true
kolla_toolbox:
module_name: mysql_db
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ qinling_database_name }}"
run_once: True
delegate_to: "{{ groups['qinling-api'][0] }}"
when:
- not use_preconfigured_databases | bool
- name: Creating Qinling database user and setting permissions
become: true
kolla_toolbox:
module_name: mysql_user
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ qinling_database_user }}"
password: "{{ qinling_database_password }}"
host: "%"
priv: "{{ qinling_database_name }}.*:ALL"
append_privs: "yes"
run_once: True
delegate_to: "{{ groups['qinling-api'][0] }}"
when:
- not use_preconfigured_databases | bool
- import_tasks: bootstrap_service.yml

View File

@ -1,20 +0,0 @@
---
- name: Running Qinling bootstrap container
vars:
qinling_api: "{{ qinling_services['qinling-api'] }}"
become: true
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
detach: False
environment:
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
image: "{{ qinling_api.image }}"
labels:
BOOTSTRAP:
name: "bootstrap_qinling"
restart_policy: no
volumes: "{{ qinling_api.volumes|reject('equalto', '')|list }}"
run_once: True
delegate_to: "{{ groups[qinling_api.group][0] }}"

View File

@ -1,16 +0,0 @@
---
- name: Check qinling containers
become: true
kolla_docker:
action: "compare_container"
common_options: "{{ docker_common_options }}"
name: "{{ item.value.container_name }}"
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
dimensions: "{{ item.value.dimensions }}"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"
notify:
- Restart {{ item.key }} container

View File

@ -1 +0,0 @@
---

View File

@ -1,8 +0,0 @@
---
- name: Cloning qinling source repository for development
become: true
git:
repo: "{{ qinling_git_repository }}"
dest: "{{ kolla_dev_repos_directory }}/{{ project_name }}"
update: "{{ qinling_dev_repos_pull }}"
version: "{{ qinling_source_version }}"

View File

@ -1,102 +0,0 @@
---
- name: Ensuring config directories exist
file:
path: "{{ node_config_directory }}/{{ item.key }}"
state: "directory"
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
become: true
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"
- include_tasks: external_kubernetes.yml
when:
- (enable_qinling | bool) and (qinling_kubernetes_certificates | bool)
- inventory_hostname in groups['qinling-engine']
- name: Check if policies shall be overwritten
stat:
path: "{{ item }}"
delegate_to: localhost
run_once: True
register: qinling_policy
with_first_found:
- files: "{{ supported_policy_format_list }}"
paths:
- "{{ node_custom_config }}/qinling/"
skip: true
- name: Set qinling policy file
set_fact:
qinling_policy_file: "{{ qinling_policy.results.0.stat.path | basename }}"
qinling_policy_file_path: "{{ qinling_policy.results.0.stat.path }}"
when:
- qinling_policy.results
- include_tasks: copy-certs.yml
when:
- kolla_copy_ca_into_containers | bool
- name: Copying over config.json files for services
template:
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"
notify:
- Restart {{ item.key }} container
- name: Copying over qinling.conf
vars:
service_name: "{{ item.key }}"
merge_configs:
sources:
- "{{ role_path }}/templates/qinling.conf.j2"
- "{{ node_custom_config }}/global.conf"
- "{{ node_custom_config }}/qinling.conf"
- "{{ node_custom_config }}/qinling/{{ item.key }}.conf"
- "{{ node_custom_config }}/qinling/{{ inventory_hostname }}/qinling.conf"
dest: "{{ node_config_directory }}/{{ item.key }}/qinling.conf"
mode: "0660"
become: true
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"
notify:
- Restart {{ item.key }} container
- name: Copying over wsgi-qinling files for services
vars:
service: "{{ qinling_services['qinling-api'] }}"
template:
src: "wsgi-qinling.conf.j2"
dest: "{{ node_config_directory }}/qinling-api/wsgi-qinling.conf"
mode: "0660"
become: true
when:
- inventory_hostname in groups[service.group]
- service.enabled | bool
notify:
- Restart qinling-api container
- name: Copying over existing policy file
template:
src: "{{ qinling_policy_file_path }}"
dest: "{{ node_config_directory }}/{{ item.key }}/{{ qinling_policy_file }}"
mode: "0660"
become: true
when:
- qinling_policy_file is defined
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"
notify:
- Restart {{ item.key }} container

View File

@ -1,6 +0,0 @@
---
- name: "Copy certificates and keys for {{ project_name }}"
import_role:
role: service-cert-copy
vars:
project_services: "{{ qinling_services }}"

View File

@ -1,2 +0,0 @@
---
- import_tasks: check-containers.yml

View File

@ -1,14 +0,0 @@
---
- import_tasks: register.yml
- import_tasks: config.yml
- import_tasks: check-containers.yml
- include_tasks: clone.yml
when: qinling_dev_mode | bool
- import_tasks: bootstrap.yml
- name: Flush handlers
meta: flush_handlers

View File

@ -1,19 +0,0 @@
---
- name: Copy over Kubernetes certificates files for qinling-engine
copy:
src: "{{ item }}"
dest: "{{ node_config_directory }}/qinling-engine/"
mode: "0660"
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
become: true
register: qinling_engine_kubernetes_files
with_items:
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes_ca.crt"
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes.crt"
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes.key"
when:
- qinling_kubernetes_certificates | bool
- inventory_hostname in groups['qinling-engine']
notify:
- Restart qinling-engine container

View File

@ -1,7 +0,0 @@
---
- name: "Configure haproxy for {{ project_name }}"
import_role:
name: haproxy-config
vars:
project_services: "{{ qinling_services }}"
tags: always

View File

@ -1,2 +0,0 @@
---
- include_tasks: "{{ kolla_action }}.yml"

View File

@ -1,24 +0,0 @@
---
- import_role:
name: service-precheck
vars:
service_precheck_services: "{{ qinling_services }}"
service_name: "{{ project_name }}"
- name: Get container facts
become: true
kolla_container_facts:
name:
- qinling_api
register: container_facts
- name: Checking free port for Qinling API
wait_for:
host: "{{ api_interface_address }}"
port: "{{ qinling_api_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['qinling_api'] is not defined
- inventory_hostname in groups['qinling-api']

View File

@ -1,11 +0,0 @@
---
- name: Pulling qinling images
become: true
kolla_docker:
action: "pull_image"
common_options: "{{ docker_common_options }}"
image: "{{ item.value.image }}"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ qinling_services }}"

View File

@ -1,2 +0,0 @@
---
- import_tasks: deploy.yml

View File

@ -1,7 +0,0 @@
---
- import_role:
name: service-ks-register
vars:
service_ks_register_auth: "{{ openstack_qinling_auth }}"
service_ks_register_services: "{{ qinling_ks_services }}"
service_ks_register_users: "{{ qinling_ks_users }}"

View File

@ -1,6 +0,0 @@
---
- import_role:
name: service-stop
vars:
project_services: "{{ qinling_services }}"
service_name: "{{ project_name }}"

View File

@ -1,9 +0,0 @@
---
- import_tasks: config.yml
- import_tasks: check-containers.yml
- import_tasks: bootstrap_service.yml
- name: Flush handlers
meta: flush_handlers

View File

@ -1,32 +0,0 @@
{% set qinling_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
{% set qinling_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
{
"command": "{{ qinling_cmd }} -DFOREGROUND",
"config_files": [
{
"source": "{{ container_config_directory }}/qinling.conf",
"dest": "/etc/qinling/qinling.conf",
"owner": "qinling",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/wsgi-qinling.conf",
"dest": "/etc/{{ qinling_dir }}/wsgi-qinling.conf",
"owner": "qinling",
"perm": "0600"
}{% if qinling_policy_file is defined %},
{
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
"dest": "/etc/qinling/{{ qinling_policy_file }}",
"owner": "qinling",
"perm": "0600"
}{% endif %}
],
"permissions": [
{
"path": "/var/log/kolla/qinling",
"owner": "qinling:qinling",
"recurse": true
}
]
}

View File

@ -1,47 +0,0 @@
{
"command": "qinling-engine --config-file /etc/qinling/qinling.conf",
"config_files": [
{
"source": "{{ container_config_directory }}/qinling.conf",
"dest": "/etc/qinling/qinling.conf",
"owner": "qinling",
"perm": "0600"
}{% if qinling_policy_file is defined %},
{
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
"dest": "/etc/qinling/{{ qinling_policy_file }}",
"owner": "qinling",
"perm": "0600"
}{% endif %}{% if qinling_kubernetes_certificates is defined and qinling_kubernetes_certificates | bool %},
{
"source": "{{ container_config_directory }}/kubernetes_ca.crt",
"dest": "/etc/qinling/pki/kubernetes/ca.crt",
"owner": "qinling",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/kubernetes.crt",
"dest": "/etc/qinling/pki/kubernetes/qinling.crt",
"owner": "qinling",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/kubernetes.key",
"dest": "/etc/qinling/pki/kubernetes/qinling.key",
"owner": "qinling",
"perm": "0600"
}{% endif %}
],
"permissions": [
{
"path": "/var/lib/qinling",
"owner": "qinling:qinling",
"recurse": true
},
{
"path": "/var/log/kolla/qinling",
"owner": "qinling:qinling",
"recurse": true
}
]
}

View File

@ -1,70 +0,0 @@
[DEFAULT]
debug = {{ qinling_logging_debug }}
log_dir = /var/log/kolla/qinling
transport_url = {{ rpc_transport_url }}
{% if service_name == 'qinling-api' %}
[api]
port = {{ qinling_api_port }}
host = {{ api_interface_address }}
{% endif %}
{% if service_name == 'qinling-engine' %}
[engine]
host = {{ api_interface_address }}
{% endif %}
[database]
connection = mysql+pymysql://{{ qinling_database_user }}:{{ qinling_database_password }}@{{ qinling_database_address }}/{{ qinling_database_name }}
connection_recycle_time = {{ database_connection_recycle_time }}
max_pool_size = {{ database_max_pool_size }}
max_retries = -1
[keystone_authtoken]
www_authenticate_uri = {{ keystone_internal_url }}/v3
auth_url = {{ keystone_admin_url }}
auth_type = password
project_domain_name = {{ default_project_domain_name }}
user_domain_name = {{ default_user_domain_name }}
project_name = service
username = {{ qinling_keystone_user }}
password = {{ qinling_keystone_password }}
region_name = {{ openstack_region_name }}
cafile = {{ openstack_cacert }}
memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[storage]
file_system_dir = /var/lib/qinling/package
[etcd]
{% if enable_etcd | bool %}
host = {{ api_interface_address }}
port = {{ etcd_client_port }}
protocol = {{ etcd_protocol }}
{% endif %}
[oslo_messaging_notifications]
transport_url = {{ notify_transport_url }}
{% if enable_ceilometer | bool %}
driver = messagingv2
topics = notifications
{% else %}
driver = noop
{% endif %}
{% if om_enable_rabbitmq_tls | bool %}
[oslo_messaging_rabbit]
ssl = true
ssl_ca_file = {{ om_rabbitmq_cacert }}
{% endif %}
{% if qinling_policy_file is defined %}
[oslo_policy]
policy_file = {{ qinling_policy_file }}
{% endif %}
[oslo_middleware]
enable_proxy_headers_parsing = True

View File

@ -1,39 +0,0 @@
{% set qinling_log_dir = '/var/log/kolla/qinling' %}
Listen {{ api_interface_address | put_address_in_context('url') }}:{{ qinling_api_port }}
ServerSignature Off
ServerTokens Prod
TraceEnable off
KeepAliveTimeout {{ kolla_httpd_keep_alive }}
ErrorLog "{{ qinling_log_dir }}/apache-error.log"
<IfModule log_config_module>
CustomLog "{{ qinling_log_dir }}/apache-access.log" common
</IfModule>
{% if qinling_logging_debug | bool %}
LogLevel info
{% endif %}
<VirtualHost *:{{ qinling_api_port }}>
## Vhost docroot
DocumentRoot "/var/www/cgi-bin/qinling"
## Directories, there should at least be a declaration for /var/www/cgi-bin/qinling
<Directory "/var/www/cgi-bin/qinling">
Options Indexes FollowSymLinks MultiViews
Require all granted
</Directory>
## Logging
ErrorLog "{{ qinling_log_dir }}/qinling_api_wsgi_error.log"
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
CustomLog "{{ qinling_log_dir }}/qinling_api_wsgi_access.log" logformat
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess qinling group=qinling processes={{ openstack_service_workers }} threads=1 user=qinling
WSGIProcessGroup qinling
WSGIScriptAlias / "/var/www/cgi-bin/qinling/wsgi.py"
</VirtualHost>

View File

@ -62,7 +62,6 @@
- enable_placement_{{ enable_placement | bool }} - enable_placement_{{ enable_placement | bool }}
- enable_prometheus_{{ enable_prometheus | bool }} - enable_prometheus_{{ enable_prometheus | bool }}
- enable_qdrouterd_{{ enable_qdrouterd | bool }} - enable_qdrouterd_{{ enable_qdrouterd | bool }}
- enable_qinling_{{ enable_qinling | bool }}
- enable_rabbitmq_{{ enable_rabbitmq | bool }} - enable_rabbitmq_{{ enable_rabbitmq | bool }}
- enable_rally_{{ enable_rally | bool }} - enable_rally_{{ enable_rally | bool }}
- enable_redis_{{ enable_redis | bool }} - enable_redis_{{ enable_redis | bool }}
@ -302,11 +301,6 @@
tasks_from: loadbalancer tasks_from: loadbalancer
tags: prometheus tags: prometheus
when: enable_prometheus | bool when: enable_prometheus | bool
- include_role:
name: qinling
tasks_from: loadbalancer
tags: qinling
when: enable_qinling | bool
- include_role: - include_role:
name: rabbitmq name: rabbitmq
tasks_from: loadbalancer tasks_from: loadbalancer
@ -838,18 +832,6 @@
tags: mistral, tags: mistral,
when: enable_mistral | bool } when: enable_mistral | bool }
- name: Apply role qinling
gather_facts: false
hosts:
- qinling-api
- qinling-engine
- '&enable_qinling_True'
serial: '{{ kolla_serial|default("0") }}'
roles:
- { role: qinling,
tags: qinling,
when: enable_qinling | bool }
- name: Apply role sahara - name: Apply role sahara
gather_facts: false gather_facts: false
hosts: hosts:

View File

@ -13,6 +13,5 @@ compute services.
nova-cells-guide nova-cells-guide
nova-fake-driver nova-fake-driver
nova-guide nova-guide
qinling-guide
vmware-guide vmware-guide
zun-guide zun-guide

View File

@ -1,102 +0,0 @@
.. _qinling-guide:
=========================
Qinling - Function Engine
=========================
Overview
~~~~~~~~
Qinling aims to provide a platform to support serverless functions
(like AWS Lambda). Qinling supports different container orchestration
platforms (Kubernetes/Swarm, etc...) and different function package storage
backends (local/Swift/S3) by nature using plugin mechanism.
Kolla deploys Qinling API and Qinling Engine containers which are the main
Qinling components but it needs to be connected to an existing container
orchestration platforms.
Apply custom policies to Qinling API
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Custom policies could be apply by creating ``policy.json`` file under
``/etc/kolla/config/qinling`` directory.
Enable etcd role
~~~~~~~~~~~~~~~~
Qinling requires etcd for function mapping and concurrency. The etcd role
should be enabled to configure the etcd address and port within `qinling.conf`.
Look for ``enable_etcd: "no"`` and change it in ``/etc/kolla/globals.yml``:
.. code-block:: yaml
enable_etcd: "yes"
Connect to an existing Kubernetes cluster
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Certificates
------------
``qinling-engine`` authenticates to Kubernetes by using certificates.
.. note::
If the cluster has not been created with OpenStack Magnum then
certificates need to be gathered using different methods that will not
be mentioned here.
If the Kubernetes cluster has been deployed with OpenStack Magnum then the
OpenStack client should be used to retrieve the certificates.
.. code-block:: console
openstack coe cluster config --dir . 687f7476-5604-4b44-8b09-b7a4f3fdbd64 --output-certs
Where ``687f7476-5604-4b44-8b09-b7a4f3fdbd64`` is the Kubernetes cluster ID
created with Magnum.
Four files should have been generated:
* ``ca.pem``
* ``cert.pem``
* ``key.pem``
* ``config``
Only ``ca.pem``, ``cert.pem`` and ``key.pem`` will be used, these files have
to be stored in ``/etc/kolla/config/qinling/qinling-engine`` directory under
these file name:
* ``ca.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes_ca.crt``
* ``cert.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes.crt``
* ``key.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes.key``
Declare ``qinling_kubernetes_certificates`` variable in
``/etc/kolla/globals.yml``:
.. code-block:: yaml
qinling_kubernetes_certificates: "yes"
Kubernetes cluster
------------------
``qinling-engine`` needs to know where to connect, the information is
provided by options under ``[kubernetes]`` section inside ``qinling.conf``
configuration file.
As mentioned above, these settings are only required by ``qinling-engine``,
put the content in ``/etc/kolla/config/qinling/qinling-engine.conf``.
.. code-block:: ini
[kubernetes]
kube_host = https://192.168.1.168:6443
ssl_ca_cert = /etc/qinling/pki/kubernetes/ca.crt
cert_file = /etc/qinling/pki/kubernetes/qinling.crt
key_file = /etc/qinling/pki/kubernetes/qinling.key
``kube_host`` is the Kubernetes cluster API address, ``https`` protocol
has to be defined.

View File

@ -312,7 +312,6 @@
#enable_horizon_murano: "{{ enable_murano | bool }}" #enable_horizon_murano: "{{ enable_murano | bool }}"
#enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}" #enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
#enable_horizon_octavia: "{{ enable_octavia | bool }}" #enable_horizon_octavia: "{{ enable_octavia | bool }}"
#enable_horizon_qinling: "{{ enable_qinling | bool }}"
#enable_horizon_sahara: "{{ enable_sahara | bool }}" #enable_horizon_sahara: "{{ enable_sahara | bool }}"
#enable_horizon_searchlight: "{{ enable_searchlight | bool }}" #enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
#enable_horizon_senlin: "{{ enable_senlin | bool }}" #enable_horizon_senlin: "{{ enable_senlin | bool }}"
@ -369,7 +368,6 @@
#enable_placement: "{{ enable_nova | bool or enable_zun | bool }}" #enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
#enable_prometheus: "no" #enable_prometheus: "no"
#enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}" #enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
#enable_qinling: "no"
#enable_rally: "no" #enable_rally: "no"
#enable_redis: "no" #enable_redis: "no"
#enable_sahara: "no" #enable_sahara: "no"

View File

@ -188,9 +188,6 @@ masakari_keystone_password:
memcache_secret_key: memcache_secret_key:
qinling_database_password:
qinling_keystone_password:
# HMAC secret key # HMAC secret key
osprofiler_secret: osprofiler_secret:

View File

@ -0,0 +1,8 @@
---
upgrade:
- |
The ``Qinling`` project is no longer maintained and
`retired since Wallaby cycle`__ . Its support and roles
are also removed since Wallaby cycle.
__ http://lists.openstack.org/pipermail/openstack-discuss/2020-November/018638.html

View File

@ -191,9 +191,6 @@ control
[magnum:children] [magnum:children]
control control
[qinling:children]
control
[sahara:children] [sahara:children]
control control
@ -518,13 +515,6 @@ magnum
[magnum-conductor:children] [magnum-conductor:children]
magnum magnum
# Qinling
[qinling-api:children]
qinling
[qinling-engine:children]
qinling
# Sahara # Sahara
[sahara-api:children] [sahara-api:children]
sahara sahara