text: // 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.
  
  export default {
    name: 'offering',
    title: 'Offerings',
    icon: 'shopping',
    permission: ['listServiceOfferings'],
    children: [
      {
        name: 'computeoffering',
        title: 'Compute Offerings',
        icon: 'cloud',
        permission: ['listServiceOfferings'],
        params: { isrecursive: 'true' },
        columns: ['name', 'displaytext', 'cpunumber', 'cpuspeed', 'memory', 'tags', 'domain', 'zone', 'order'],
        details: ['name', 'id', 'displaytext', 'offerha', 'provisioningtype', 'storagetype', 'iscustomized', 'limitcpuuse', 'cpunumber', 'cpuspeed', 'memory', 'tags', 'domain', 'zone', 'created'],
        related: [{
          name: 'vm',
          title: 'Instances',
          param: 'serviceofferingid'
        }],
        actions: [{
          api: 'createServiceOffering',
          icon: 'plus',
          label: 'Add Offering',
          listView: true,
          popup: true,
          component: () => import('@/views/offering/AddComputeOffering.vue')
        }, {
          api: 'updateServiceOffering',
          icon: 'edit',
          label: 'Edit Offering',
          dataView: true,
          args: ['name', 'displaytext']
        }, {
          api: 'updateServiceOffering',
          icon: 'lock',
          label: 'Update Offering Access',
          dataView: true,
          popup: true,
          component: () => import('@/views/offering/UpdateOfferingAccess.vue')
        }, {
          api: 'deleteServiceOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true
        }]
      },
      {
        name: 'systemoffering',
        title: 'System Offerings',
        icon: 'setting',
        permission: ['listServiceOfferings', 'listInfrastructure'],
        params: { issystem: 'true', isrecursive: 'true' },
        columns: ['name', 'systemvmtype', 'cpunumber', 'cpuspeed', 'memory', 'storagetype', 'tags', 'order'],
        details: ['name', 'id', 'displaytext', 'systemvmtype', 'provisioningtype', 'storagetype', 'iscustomized', 'limitcpuuse', 'cpunumber', 'cpuspeed', 'memory', 'tags', 'domain', 'zone', 'created'],
        actions: [{
          api: 'createServiceOffering',
          icon: 'plus',
          label: 'Add Offering',
          listView: true,
          params: { issystem: 'true' },
          popup: true,
          component: () => import('@/views/offering/AddComputeOffering.vue')
        }, {
          api: 'updateServiceOffering',
          icon: 'edit',
          label: 'Edit Offering',
          dataView: true,
          params: { issystem: 'true' },
          args: ['name', 'displaytext']
        }, {
          api: 'deleteServiceOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true,
          params: { issystem: 'true' }
        }]
      },
      {
        name: 'diskoffering',
        title: 'Disk Offerings',
        icon: 'hdd',
        permission: ['listDiskOfferings'],
        params: { isrecursive: 'true' },
        columns: ['name', 'displaytext', 'disksize', 'tags', 'domain', 'zone', 'order'],
        details: ['name', 'id', 'displaytext', 'disksize', 'provisioningtype', 'storagetype', 'iscustomized', 'tags', 'domain', 'zone', 'created'],
        related: [{
          name: 'volume',
          title: 'Volumes',
          param: 'diskofferingid'
        }],
        actions: [{
          api: 'createDiskOffering',
          icon: 'plus',
          label: 'Add Offering',
          listView: true,
          popup: true,
          component: () => import('@/views/offering/AddDiskOffering.vue')
        }, {
          api: 'updateDiskOffering',
          icon: 'edit',
          label: 'Edit Offering',
          dataView: true,
          args: ['name', 'displaytext']
        }, {
          api: 'updateDiskOffering',
          icon: 'lock',
          label: 'Update Offering Access',
          dataView: true,
          popup: true,
          component: () => import('@/views/offering/UpdateOfferingAccess.vue')
        }, {
          api: 'deleteDiskOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true
        }]
      },
      {
        name: 'backupoffering',
        title: 'Backup Offerings',
        icon: 'cloud-upload',
        permission: ['listBackupOfferings'],
        columns: ['name', 'description', 'zoneid'],
        details: ['name', 'id', 'description', 'externalid', 'zone', 'created'],
        actions: [{
          api: 'importBackupOffering',
          icon: 'plus',
          label: 'Import Offering',
          listView: true,
          popup: true,
          component: () => import('@/views/offering/ImportBackupOffering.vue')
        }, {
          api: 'deleteBackupOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true
        }]
      },
      {
        name: 'networkoffering',
        title: 'Network Offerings',
        icon: 'wifi',
        permission: ['listNetworkOfferings'],
        params: { isrecursive: 'true' },
        columns: ['name', 'state', 'guestiptype', 'traffictype', 'networkrate', 'tags', 'domain', 'zone', 'order'],
        details: ['name', 'id', 'displaytext', 'guestiptype', 'traffictype', 'networkrate', 'ispersistent', 'egressdefaultpolicy', 'availability', 'conservemode', 'specifyvlan', 'specifyipranges', 'supportspublicaccess', 'supportsstrechedl2subnet', 'tags', 'service', 'domain', 'zone'],
        actions: [{
          api: 'createNetworkOffering',
          icon: 'plus',
          label: 'Add Offering',
          listView: true,
          popup: true,
          component: () => import('@/views/offering/AddNetworkOffering.vue')
        }, {
          api: 'updateNetworkOffering',
          icon: 'edit',
          label: 'Edit Offering',
          dataView: true,
          args: ['name', 'displaytext', 'availability'],
          mapping: {
            availability: {
              options: ['Optional', 'Required']
            }
          }
        }, {
          api: 'updateNetworkOffering',
          icon: 'play-circle',
          label: 'Enable Offering',
          dataView: true,
          show: (record) => { return record.state === 'Disabled' },
          args: ['state'],
          mapping: {
            state: {
              value: (record) => { return 'Enabled' }
            }
          }
        }, {
          api: 'updateNetworkOffering',
          icon: 'pause-circle',
          label: 'Disable Offering',
          dataView: true,
          show: (record) => { return record.state === 'Enabled' },
          args: ['state'],
          mapping: {
            state: {
              value: (record) => { return 'Disabled' }
            }
          }
        }, {
          api: 'updateNetworkOffering',
          icon: 'lock',
          label: 'Update Offering Access',
          dataView: true,
          popup: true,
          component: () => import('@/views/offering/UpdateOfferingAccess.vue')
        }, {
          api: 'deleteNetworkOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true
        }]
      },
      {
        name: 'vpcoffering',
        title: 'VPC Offerings',
        icon: 'deployment-unit',
        permission: ['listVPCOfferings'],
        params: { isrecursive: 'true' },
        resourceType: 'VpcOffering',
        columns: ['name', 'state', 'displaytext', 'domain', 'zone', 'order'],
        details: ['name', 'id', 'displaytext', 'distributedvpcrouter', 'tags', 'service', 'domain', 'zone', 'created'],
        related: [{
          name: 'vpc',
          title: 'VPCs',
          param: 'vpcofferingid'
        }],
        actions: [{
          api: 'createVPCOffering',
          icon: 'plus',
          label: 'Add Offering',
          listView: true,
          popup: true,
          component: () => import('@/views/offering/AddVpcOffering.vue')
        }, {
          api: 'updateVPCOffering',
          icon: 'edit',
          label: 'Edit Offering',
          dataView: true,
          args: ['name', 'displaytext']
        }, {
          api: 'updateVPCOffering',
          icon: 'play-circle',
          label: 'Enable Offering',
          dataView: true,
          show: (record) => { return record.state === 'Disabled' },
          args: ['state'],
          mapping: {
            state: {
              value: (record) => { return 'Enabled' }
            }
          }
        }, {
          api: 'updateVPCOffering',
          icon: 'pause-circle',
          label: 'Disable Offering',
          dataView: true,
          show: (record) => { return record.state === 'Enabled' },
          args: ['state'],
          mapping: {
            state: {
              value: (record) => { return 'Disabled' }
            }
          }
        }, {
          api: 'updateVPCOffering',
          icon: 'lock',
          label: 'Update Offering Access',
          dataView: true,
          popup: true,
          component: () => import('@/views/offering/UpdateOfferingAccess.vue')
        }, {
          api: 'deleteVPCOffering',
          icon: 'delete',
          label: 'Delete Offering',
          dataView: true
        }]
      }
    ]
  }
  