mz_catalog/durable/upgrade/
v70_to_v71.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10use crate::durable::upgrade::objects_v71::Empty;
11
12use crate::durable::upgrade::MigrationAction;
13use crate::durable::upgrade::{objects_v70 as v70, objects_v71 as v71};
14
15const DEFAULT_USER_NETWORK_POLICY_NAME: &str = "default";
16const NETWORK_POLICIES_DEFAULT_POLICY_OID: u32 = 17048;
17
18const MZ_SYSTEM_ROLE_ID: u64 = 1;
19const MZ_SUPPORT_ROLE_ID: u64 = 2;
20
21pub fn upgrade(
22    _snapshot: Vec<v70::StateUpdateKind>,
23) -> Vec<MigrationAction<v70::StateUpdateKind, v71::StateUpdateKind>> {
24    let policy = v71::state_update_kind::NetworkPolicy {
25        key: Some(v71::NetworkPolicyKey {
26            id: Some(v71::NetworkPolicyId {
27                value: Some(v71::network_policy_id::Value::User(1)),
28            }),
29        }),
30        value: Some(v71::NetworkPolicyValue {
31            name: DEFAULT_USER_NETWORK_POLICY_NAME.to_string(),
32            rules: vec![v71::NetworkPolicyRule {
33                name: "open_ingress".to_string(),
34                action: Some(v71::network_policy_rule::Action::Allow(Empty {})),
35                direction: Some(v71::network_policy_rule::Direction::Ingress(Empty {})),
36                address: "0.0.0.0/0".to_string(),
37            }],
38            owner_id: Some(v71::RoleId {
39                value: Some(v71::role_id::Value::System(MZ_SYSTEM_ROLE_ID)),
40            }),
41            privileges: vec![
42                v71::MzAclItem {
43                    grantee: Some(v71::RoleId {
44                        value: Some(v71::role_id::Value::Public(Empty {})),
45                    }),
46                    grantor: Some(v71::RoleId {
47                        value: Some(v71::role_id::Value::System(MZ_SYSTEM_ROLE_ID)),
48                    }),
49                    // usage
50                    acl_mode: Some(v71::AclMode { bitflags: 256 }),
51                },
52                v71::MzAclItem {
53                    grantee: Some(v71::RoleId {
54                        value: Some(v71::role_id::Value::System(MZ_SUPPORT_ROLE_ID)),
55                    }),
56                    grantor: Some(v71::RoleId {
57                        value: Some(v71::role_id::Value::System(MZ_SYSTEM_ROLE_ID)),
58                    }),
59                    // usage
60                    acl_mode: Some(v71::AclMode { bitflags: 256 }),
61                },
62                v71::MzAclItem {
63                    grantee: Some(v71::RoleId {
64                        value: Some(v71::role_id::Value::System(MZ_SYSTEM_ROLE_ID)),
65                    }),
66                    grantor: Some(v71::RoleId {
67                        value: Some(v71::role_id::Value::System(MZ_SYSTEM_ROLE_ID)),
68                    }),
69                    // usage_create
70                    acl_mode: Some(v71::AclMode { bitflags: 768 }),
71                },
72            ],
73            oid: NETWORK_POLICIES_DEFAULT_POLICY_OID,
74        }),
75    };
76
77    vec![MigrationAction::Insert(v71::StateUpdateKind {
78        kind: Some(v71::state_update_kind::Kind::NetworkPolicy(policy)),
79    })]
80}