Commit 0bcd1141 authored by xiaohua guan's avatar xiaohua guan Committed by Yas Naoi
Browse files

Issue #3316471 by Xiaohua Guan, yas: Add the OpenStack Router list view for interfaces

parent 919e4c3b
Loading
Loading
Loading
Loading
+544 −1
Original line number Diff line number Diff line
@@ -257,7 +257,17 @@ display:
          distinct: false
          replica: false
          query_tags: {  }
      relationships: {  }
      relationships:
        router:
          id: router
          table: openstack_port
          field: router
          relationship: none
          group_type: group
          admin_label: Router
          entity_type: openstack_port
          plugin_id: standard
          required: true
      use_ajax: true
      header: {  }
      footer: {  }
@@ -1736,3 +1746,536 @@ display:
        - url.query_args
        - user.permissions
      tags: {  }
  router_interface:
    id: router_interface
    display_title: 'Router Interface'
    display_plugin: page
    position: 1
    display_options:
      title: 'OpenStack router interfaces'
      fields:
        name:
          id: name
          table: openstack_port
          field: name
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: null
          entity_field: name
          plugin_id: field
          label: Name
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: string
          settings:
            link_to_entity: true
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        fixed_ips:
          id: fixed_ips
          table: openstack_port__fixed_ips
          field: fixed_ips_value
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: openstack_port
          entity_field: fixed_ips
          plugin_id: field
          label: 'Fixed IPs'
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: openstack_fixed_ips_simple_formatter
          settings: {  }
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        status:
          id: status
          table: openstack_port
          field: status
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: openstack_port
          entity_field: status
          plugin_id: field
          label: Status
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: true
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: string
          settings:
            link_to_entity: false
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        device_owner:
          id: device_owner
          table: openstack_port
          field: device_owner
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: openstack_port
          entity_field: device_owner
          plugin_id: field
          label: Type
          exclude: false
          alter:
            alter_text: true
            text: "{% if device_owner == 'network:router_interface' %}\r\n    Internal Interface\r\n{% elseif device_owner == 'network:router_gateway' %}\r\n    External Gateway\r\n{% else %}\r\n    Unknown\r\n{% endif %}\r\n"
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: true
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: string
          settings:
            link_to_entity: false
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        admin_state_up:
          id: admin_state_up
          table: openstack_port
          field: admin_state_up
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: openstack_port
          entity_field: admin_state_up
          plugin_id: field
          label: 'Admin State'
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: true
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: boolean
          settings:
            format: default
            format_custom_false: ''
            format_custom_true: ''
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
      access:
        type: ViewsCloudContextAccess
        options:
          perm: 'list openstack port'
      arguments:
        cloud_context:
          id: cloud_context
          table: openstack_port
          field: cloud_context
          relationship: none
          group_type: group
          admin_label: ''
          entity_type: openstack_port
          entity_field: cloud_context
          plugin_id: string
          default_action: default
          exception:
            value: all
            title_enable: false
            title: All
          title_enable: false
          title: ''
          default_argument_type: raw
          default_argument_options:
            index: 2
            use_alias: false
          default_argument_skip_url: false
          summary_options:
            base_path: ''
            count: true
            override: false
            items_per_page: 25
          summary:
            sort_order: asc
            number_of_records: 0
            format: default_summary
          specify_validation: false
          validate:
            type: none
            fail: 'not found'
          validate_options: {  }
          glossary: false
          limit: 0
          case: none
          path_case: none
          transform_dash: false
          break_phrase: false
        id:
          id: id
          table: openstack_router
          field: id
          relationship: router
          group_type: group
          admin_label: ''
          entity_type: openstack_router
          entity_field: id
          plugin_id: numeric
          default_action: ignore
          exception:
            value: all
            title_enable: false
            title: All
          title_enable: false
          title: ''
          default_argument_type: fixed
          default_argument_options:
            argument: ''
          default_argument_skip_url: false
          summary_options:
            base_path: ''
            count: true
            override: false
            items_per_page: 25
          summary:
            sort_order: asc
            number_of_records: 0
            format: default_summary
          specify_validation: false
          validate:
            type: none
            fail: 'not found'
          validate_options: {  }
          break_phrase: false
          not: false
      filters: {  }
      filter_groups:
        operator: AND
        groups: {  }
      style:
        type: table
        options:
          grouping: {  }
          row_class: ''
          default_row_class: true
          columns:
            openstack_port_bulk_form: openstack_port_bulk_form
            name: name
            network_id: network_id
            fixed_ips: fixed_ips
            mac_address: mac_address
            device_owner: device_owner
            status: status
            admin_state_up: admin_state_up
            operations: operations
          default: '-1'
          info:
            openstack_port_bulk_form:
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            name:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            network_id:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            fixed_ips:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            mac_address:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            device_owner:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            status:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            admin_state_up:
              sortable: true
              default_sort_order: asc
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
            operations:
              align: ''
              separator: ''
              empty_column: false
              responsive: ''
          override: true
          sticky: true
          summary: ''
          empty_table: false
          caption: ''
          description: ''
      row:
        type: fields
        options:
          default_field_elements: true
          inline: {  }
          separator: ''
          hide_empty: false
      defaults:
        access: false
        title: false
        style: false
        row: false
        fields: false
        arguments: false
        filters: false
        filter_groups: false
      display_description: ''
      display_extenders: {  }
      path: clouds/openstack/%cloud_context/router/%openstack_router/interface
    cache_metadata:
      max-age: -1
      contexts:
        - 'languages:language_content'
        - 'languages:language_interface'
        - url
        - url.query_args
        - user.permissions
      tags: {  }
+12 −0
Original line number Diff line number Diff line
@@ -1596,3 +1596,15 @@ function openstack_update_8271() {
  \Drupal::service('cloud')->updateYmlDefinitions($files, 'openstack');
  drupal_flush_all_caches();
}

/**
 * Add router_interface to openstac_port view.
 */
function openstack_update_8272() {
  $files = [
    'views.view.openstack_port.yml',
  ];

  \Drupal::service('cloud')->updateYmlDefinitions($files, 'openstack');
  drupal_flush_all_caches();
}
+11 −0
Original line number Diff line number Diff line
@@ -308,3 +308,14 @@ entity.openstack_floating_ip.delete_form:
  base_route:  entity.openstack_floating_ip.canonical
  title: Delete
  weight: 10

# OpenStack Router
entity.openstack_router.canonical:
  route_name: entity.openstack_router.canonical
  base_route: entity.openstack_router.canonical
  title: 'View'

entity.openstack_router.interface:
  route_name: view.openstack_port.router_interface
  base_route: entity.openstack_router.canonical
  title: 'Interfaces'
+11 −0
Original line number Diff line number Diff line
@@ -26,6 +26,17 @@ class OpenStackPortViewsData extends AwsCloudViewsData {
      ],
    ];

    $data[$table_name]['router']['relationship'] = [
      'id' => 'standard',
      'title' => $this->t('Router'),
      'label' => $this->t('Router'),
      'group' => 'Port',
      'help' => $this->t('Reference to router'),
      'base' => 'openstack_router',
      'base field' => 'router_id',
      'relationship field' => 'device_id',
    ];

    // The following is a list of fields to turn from text search to
    // select list.  This list can be expanded through hook_views_data_alter().
    $selectable = [];