diff --git a/tools/generate_rust.sh b/tools/generate_rust.sh
index e297661..f585713 100755
--- a/tools/generate_rust.sh
+++ b/tools/generate_rust.sh
@@ -1,15 +1,18 @@
 #!/usr/bin/env bash -e
 
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/block-storage/v3.yaml --service-type block-storage
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/compute/v2.yaml --service-type compute
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/identity/v3.yaml --service-type identity
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/image/v2.yaml --service-type image
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/network/v2.yaml --service-type network
-openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/load-balancer/v2.yaml --service-type load-balancer
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/block-storage/v3.yaml --service-type block-storage
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/compute/v2.yaml --service-type compute
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/identity/v3.yaml --service-type identity
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/image/v2.yaml --service-type image
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/network/v2.yaml --service-type network
+#openstack-codegenerator --work-dir metadata --target metadata --openapi-yaml-spec wrk/openapi_specs/load-balancer/v2.yaml --service-type load-balancer
 
 tools/generate_rust_block_storage.sh
 tools/generate_rust_compute.sh
+tools/generate_rust_container_infrastructure_management.sh
+tools/generate_rust_dns.sh
 tools/generate_rust_identity.sh
 tools/generate_rust_image.sh
 tools/generate_rust_network.sh
 tools/generate_rust_load_balancer.sh
+tools/generate_rust_placement.sh
diff --git a/tools/generate_rust_block_storage.sh b/tools/generate_rust_block_storage.sh
index 7bee3b0..ad58da4 100755
--- a/tools/generate_rust_block_storage.sh
+++ b/tools/generate_rust_block_storage.sh
@@ -3,38 +3,13 @@
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "availability_zone"
-  "attachment"
-  "backup"
-  "cluster"
-  "default_type"
-  "extension"
-  "group"
-  "group_snapshot"
-  "group_type"
-  "host"
-  "limit"
-  "message"
-  "qos_spec"
-  "resource_filter"
-  "snapshot"
-  "snapshot_manage"
-  "type"
-  "volume"
-  "volume_manage"
-  "os_volume_transfer"
-  "volume_transfer"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/block-storage_metadata.yaml --service block-storage
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/block-storage_metadata.yaml --service block-storage
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/block-storage_metadata.yaml --service block-storage
 
-
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/block_storage/v3/${resource}" ${DST}/openstack_sdk/src/api/block_storage/v3
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/block_storage/v3/${resource}.rs" ${DST}/openstack_sdk/src/api/block_storage/v3
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/block_storage/v3/${resource}" ${DST}/openstack_cli/src/block_storage/v3
-  cp -av "${WRK_DIR}/rust/openstack_cli/tests/block_storage/v3/${resource}" ${DST}/openstack_cli/tests/block_storage/v3
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/block_storage/v3/" ${DST}/openstack_sdk/src/api/block_storage/v3
+cp -av "${WRK_DIR}/rust/openstack_types/src/block_storage/v3/" ${DST}/openstack_types/src/block_storage/v3
+cp -av "${WRK_DIR}/rust/openstack_cli/src/block_storage/v3/" ${DST}/openstack_cli/src/block_storage/v3
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/block_storage/v3/" ${DST}/openstack_cli/tests/block_storage/v3
diff --git a/tools/generate_rust_compute.sh b/tools/generate_rust_compute.sh
index 3fccc6c..ae2e5f1 100755
--- a/tools/generate_rust_compute.sh
+++ b/tools/generate_rust_compute.sh
@@ -2,22 +2,13 @@
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "extension"
-  "flavor"
-  "aggregate"
-  "availability_zone"
-  "hypervisor"
-  "keypair"
-  "server"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/compute_metadata.yaml --service compute
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/compute_metadata.yaml --service compute
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/compute_metadata.yaml --service compute
 
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/compute/v2/${resource}" ${DST}/openstack_sdk/src/api/compute/v2
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/compute/v2/${resource}.rs" ${DST}/openstack_sdk/src/api/compute/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/compute/v2/${resource}" ${DST}/openstack_cli/src/compute/v2
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/compute/v2/" ${DST}/openstack_sdk/src/api/compute/v2
+cp -av "${WRK_DIR}/rust/openstack_types/src/compute/v2/" ${DST}/openstack_types/src/compute/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/src/compute/v2/" ${DST}/openstack_cli/src/compute/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/compute/v2/" ${DST}/openstack_cli/tests/compute/v2
diff --git a/tools/generate_rust_container_infrastructure_management.sh b/tools/generate_rust_container_infrastructure_management.sh
new file mode 100755
index 0000000..534d3b6
--- /dev/null
+++ b/tools/generate_rust_container_infrastructure_management.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash -e
+
+WRK_DIR=wrk
+METADATA=metadata
+DST=~/workspace/github.com/gtema/openstack
+
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/container-infrastructure-management_metadata.yaml --service container-infrastructure-management
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/container-infrastructure-management_metadata.yaml --service container-infrastructure-management
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/container-infrastructure-management_metadata.yaml --service container-infrastructure-management
+
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/container_infrastructure_management/v1/" ${DST}/openstack_sdk/src/api/container_infrastructure_management/v1
+cp -av "${WRK_DIR}/rust/openstack_types/src/container_infrastructure_management/v1/" ${DST}/openstack_types/src/container_infrastructure_management/v1
+cp -av "${WRK_DIR}/rust/openstack_cli/src/container_infrastructure_management/v1/" ${DST}/openstack_cli/src/container_infrastructure_management/v1
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/container_infrastructure_management/v1/" ${DST}/openstack_cli/tests/container_infrastructure_management/v1
diff --git a/tools/generate_rust_dns.sh b/tools/generate_rust_dns.sh
new file mode 100755
index 0000000..33e0ed2
--- /dev/null
+++ b/tools/generate_rust_dns.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash -e
+
+WRK_DIR=wrk
+METADATA=metadata
+DST=~/workspace/github.com/gtema/openstack
+
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/dns_metadata.yaml --service dns
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/dns_metadata.yaml --service dns
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/dns_metadata.yaml --service dns
+
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/dns/v2/" ${DST}/openstack_sdk/src/api/dns/v2
+cp -av "${WRK_DIR}/rust/openstack_types/src/dns/v2/" ${DST}/openstack_types/src/dns/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/src/dns/v2/" ${DST}/openstack_cli/src/dns/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/dns/v2/" ${DST}/openstack_cli/tests/dns/v2
diff --git a/tools/generate_rust_identity.sh b/tools/generate_rust_identity.sh
index 375f284..113b9ef 100755
--- a/tools/generate_rust_identity.sh
+++ b/tools/generate_rust_identity.sh
@@ -2,29 +2,13 @@
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "auth"
-  "domain"
-  "group"
-  "os_federation"
-  "endpoint"
-  "region"
-  "role_assignment"
-  "role_inference"
-  "role"
-  "service"
-  "project"
-  "user"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/identity_metadata.yaml --service identity
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/identity_metadata.yaml --service identity
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/identity_metadata.yaml --service identity
 
-
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/identity/v3/${resource}" ${DST}/openstack_sdk/src/api/identity/v3
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/identity/v3/${resource}.rs" ${DST}/openstack_sdk/src/api/identity/v3
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/identity/v3/${resource}" ${DST}/openstack_cli/src/identity/v3
-  cp -av "${WRK_DIR}/rust/openstack_cli/tests/identity/v3/${resource}" ${DST}/openstack_cli/tests/identity/v3
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/identity/v3/" ${DST}/openstack_sdk/src/api/identity/v3
+cp -av "${WRK_DIR}/rust/openstack_types/src/identity/v3/" ${DST}/openstack_types/src/identity/v3
+cp -av "${WRK_DIR}/rust/openstack_cli/src/identity/v3/" ${DST}/openstack_cli/src/identity/v3
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/identity/v3/" ${DST}/openstack_cli/tests/identity/v3
diff --git a/tools/generate_rust_image.sh b/tools/generate_rust_image.sh
index d86d741..c56b8f6 100755
--- a/tools/generate_rust_image.sh
+++ b/tools/generate_rust_image.sh
@@ -1,19 +1,13 @@
-#!/usr/bin/env/bash -e
+#!/usr/bin/env bash -e
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "image"
-  "metadef"
-  "schema"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/image_metadata.yaml --service image
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/image_metadata.yaml --service image
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/image_metadata.yaml --service image
 
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/image/v2/${resource}" ${DST}/openstack_sdk/src/api/image/v2
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/image/v2/${resource}.rs" ${DST}/openstack_sdk/src/api/image/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/image/v2/${resource}" ${DST}/openstack_cli/src/image/v2
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/image/v2/" ${DST}/openstack_sdk/src/api/image/v2
+cp -av "${WRK_DIR}/rust/openstack_types/src/image/v2/" ${DST}/openstack_types/src/image/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/src/image/v2/" ${DST}/openstack_cli/src/image/v2
diff --git a/tools/generate_rust_load_balancer.sh b/tools/generate_rust_load_balancer.sh
index 8491819..455e334 100755
--- a/tools/generate_rust_load_balancer.sh
+++ b/tools/generate_rust_load_balancer.sh
@@ -1,32 +1,14 @@
-#!/usr/bin/env/bash -e
-#
+#!/usr/bin/env bash -e
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "amphorae"
-  "availability_zone"
-  "availability_zone_profile"
-  "flavor"
-  "flavor_profile"
-  "healthmonitor"
-  "l7policy"
-  "listener"
-  "loadbalancer"
-  "pool"
-  "provider"
-  "quota"
-  "version"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/load-balancer_metadata.yaml --service load-balancer
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/load-balancer_metadata.yaml --service load-balancer
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/load-balancer_metadata.yaml --service load-balancer
 
-
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/load_balancer/v2/${resource}" ${DST}/openstack_sdk/src/api/load_balancer/v2
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/load_balancer/v2/${resource}.rs" ${DST}/openstack_sdk/src/api/load_balancer/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/load_balancer/v2/${resource}" ${DST}/openstack_cli/src/load_balancer/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/tests/load_balancer/v2/${resource}" ${DST}/openstack_cli/tests/load_balancer/v2
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/load_balancer/v2/" ${DST}/openstack_sdk/src/api/load_balancer/v2
+cp -av "${WRK_DIR}/rust/openstack_types/src/load_balancer/v2/" ${DST}/openstack_types/src/load_balancer/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/src/load_balancer/v2/" ${DST}/openstack_cli/src/load_balancer/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/load_balancer/v2/" ${DST}/openstack_cli/tests/load_balancer/v2
diff --git a/tools/generate_rust_network.sh b/tools/generate_rust_network.sh
index d260992..d7541c6 100755
--- a/tools/generate_rust_network.sh
+++ b/tools/generate_rust_network.sh
@@ -1,27 +1,14 @@
-#!/usr/bin/env/bash -e
+#!/usr/bin/env bash -e
 
 WRK_DIR=wrk
 METADATA=metadata
-DST=~/workspace/github/gtema/openstack
-NET_RESOURCES=(
-  "address_group"
-  "address_scope"
-  "availability_zone"
-  "extension"
-  "floatingip"
-  "network"
-  "port"
-  "router"
-  "subnet"
-)
+DST=~/workspace/github.com/gtema/openstack
 
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/network_metadata.yaml --service network
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/network_metadata.yaml --service network
 openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/network_metadata.yaml --service network
 
-
-for resource in "${NET_RESOURCES[@]}"; do
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/network/v2/${resource}" ${DST}/openstack_sdk/src/api/network/v2
-  cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/network/v2/${resource}.rs" ${DST}/openstack_sdk/src/api/network/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/src/network/v2/${resource}" ${DST}/openstack_cli/src/network/v2
-  cp -av "${WRK_DIR}/rust/openstack_cli/tests/network/v2/${resource}" ${DST}/openstack_cli/tests/network/v2
-done;
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/network/v2/" ${DST}/openstack_sdk/src/api/network/v2
+cp -av "${WRK_DIR}/rust/openstack_types/src/network/v2/" ${DST}/openstack_types/src/network/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/src/network/v2/" ${DST}/openstack_cli/src/network/v2
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/network/v2/" ${DST}/openstack_cli/tests/network/v2
diff --git a/tools/generate_rust_placement.sh b/tools/generate_rust_placement.sh
new file mode 100755
index 0000000..7bc840f
--- /dev/null
+++ b/tools/generate_rust_placement.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash -e
+
+WRK_DIR=wrk
+METADATA=metadata
+DST=~/workspace/github.com/gtema/openstack
+
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-sdk --metadata ${METADATA}/placement_metadata.yaml --service placement
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-cli --metadata ${METADATA}/placement_metadata.yaml --service placement
+openstack-codegenerator --work-dir ${WRK_DIR} --target rust-types --metadata ${METADATA}/placement_metadata.yaml --service placement
+
+cp -av "${WRK_DIR}/rust/openstack_sdk/src/api/placement/v1/" ${DST}/openstack_sdk/src/api/placement/v1
+cp -av "${WRK_DIR}/rust/openstack_types/src/placement/v1/" ${DST}/openstack_types/src/placement/v1
+cp -av "${WRK_DIR}/rust/openstack_cli/src/placement/v1/" ${DST}/openstack_cli/src/placement/v1
+cp -av "${WRK_DIR}/rust/openstack_cli/tests/placement/v1/" ${DST}/openstack_cli/tests/placement/v1