1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/*-
* ============LICENSE_START==========================================
* OPENECOMP - DCAE
* ===================================================================
* Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
* ===================================================================
* Licensed 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.
* ============LICENSE_END============================================
*/
@GenModel(modelDirectory="/ncomp-openstack-model/src/main/xcore-gen")
package org.openecomp.ncomp.openstack.location
import org.openecomp.ncomp.core.NamedEntity
import org.openecomp.ncomp.openstack.compute.Flavor
import org.openecomp.ncomp.openstack.compute.FloatingIp
import org.openecomp.ncomp.openstack.compute.Image
import org.openecomp.ncomp.openstack.compute.KeyPair
import org.openecomp.ncomp.openstack.compute.SecurityGroup
import org.openecomp.ncomp.openstack.compute.Server
import org.openecomp.ncomp.openstack.compute.Volume
import org.openecomp.ncomp.openstack.neutron.CreateNetworkRequest
import org.openecomp.ncomp.openstack.neutron.Network
import org.openecomp.ncomp.openstack.neutron.NeutronSecurityGroup
import org.openecomp.ncomp.openstack.neutron.Port
import org.openecomp.ncomp.openstack.neutron.Router
import org.openecomp.ncomp.openstack.neutron.Subnet
import org.openecomp.ncomp.openstack.neutron.NeutronService
import org.openecomp.ncomp.openstack.compute.ComputeService
import org.openecomp.ncomp.openstack.neutron.NeutronFloatingIp
import org.openecomp.ncomp.openstack.ceilometer.CeilometerService
import org.openecomp.ncomp.openstack.ceilometer.CeilometerProject
annotation 'http://openecomp.org/sirius/persistence' as persistence
class OpenStackLocation extends NamedEntity, NeutronService, ComputeService, CeilometerService {
OpenStackVersion version
boolean remoteLocation = "false"
String remoteLocationName
boolean allowCreateFlavor
String keystoneUrl
String bypassIp
int flavorId = "20000"
boolean supportsSecurityGroups = "true"
boolean supportsFloatingIps = "true"
contains unordered OpenStackProject[] projects
contains unordered OpenStackUser[] users
contains unordered Image[] images //
contains unordered Flavor[] flavors //
contains unordered Hypervisor[] hypervisors
op void poll()
op void mergeLocation(OpenStackLocation loc)
}
enum OpenStackVersion {
Folsom,
Grizzly,
Havana,
Icehouse,
Juno,
Kilo,
Liberty,
Mitaka
}
class OpenStackProject extends NamedEntity, CeilometerProject {
String ID
String adminUser
String tenantId
String region
String privateNetwork
String publicNetwork
String apiKey // Rackspace
contains unordered Server[] servers //
refers unordered OpenStackUser[] users
refers OpenStackUser controllerUser
op void updateNovaState()
contains unordered Volume[] volumes
contains unordered FloatingIp[] ips
contains unordered SecurityGroup[] groups
contains unordered KeyPair[] keypairs
contains unordered Network[] networks
contains unordered Subnet[] subnets
contains unordered Router[] routers
contains unordered Port[] ports
contains unordered NeutronSecurityGroup[] security_groups
contains unordered NeutronFloatingIp[] floatingips
op Network createNetwork(CreateNetworkRequest r)
}
class OpenStackUser extends NamedEntity {
@persistence(propertyFile="bsa.properties")
transient String password
}
class HypervisorService {
String host // lab3-bsa-03-bay03
int ^id // 14
}
class HypervisorCpuTopology {
int cores // 8
int threads // 2
int sockets // 1
}
class HypervisorCpuInfo {
String vendor // Intel
String model // SandyBridge
String arch // x86_64
String[] features // ["pdpe1gb","osxsave","dca","pdcm","xtpr","tm2","est","smx","vmx","ds_cpl","monitor","dtes64","pbe","tm","ht","ss","acpi","ds","vme"]
contains HypervisorCpuTopology topology // {"cores":8,"threads":2,"sockets":1}
}
class Hypervisor extends NamedEntity {
contains HypervisorService service // {"host":"lab3-bsa-03-bay03","id":14}
String host_ip
int vcpus_used // 4
String hypervisor_type // QEMU
int local_gb_used // 60
String hypervisor_hostname //
int memory_mb_used // 20992
int memory_mb // 257922
int current_workload // 0
int vcpus // 64
contains HypervisorCpuInfo cpu_info // {"vendor": "Intel", "model": "SandyBridge", "arch": "x86_64", "features": ["pdpe1gb", "osxsave", "dca", "pdcm", "xtpr", "tm2", "est", "smx", "vmx", "ds_cpl", "monitor", "dtes64", "pbe", "tm", "ht", "ss", "acpi", "ds", "vme"], "topology": {"cores": 8, "threads": 2, "sockets": 1}}
int running_vms // 2
int free_disk_gb // 1007
int hypervisor_version // 1002000
int disk_available_least // 977
int local_gb // 1067
int free_ram_mb // 236930
int ^id // 2
}
|