16817: Merge branch 'main'
authorTom Clegg <tom@curii.com>
Thu, 11 Nov 2021 19:54:03 +0000 (14:54 -0500)
committerTom Clegg <tom@curii.com>
Thu, 11 Nov 2021 19:54:03 +0000 (14:54 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

1  2 
doc/admin/upgrading.html.textile.liquid
lib/config/config.default.yml
lib/config/export.go
lib/config/generated_config.go
sdk/go/arvados/config.go

index a05902125320470f148307b203dbf708d2b3828e,15b8d2c40d4afcabe1efcc30afa6a2c8d939fafe..c1a7ae87dec28d0c9a439334eabc4c42a98f6180
@@@ -35,14 -35,10 +35,14 @@@ TODO: extract this information based o
  <div class="releasenotes">
  </notextile>
  
- h2(#main). development main (as of 2021-10-27)
+ h2(#main). development main (as of 2021-11-10)
  
  "previous: Upgrading from 2.3.0":#v2_3_0
  
 +h3. Users are visible to other users by default
 +
 +When a new user is set up (either via @AutoSetupNewUsers@ config or via Workbench admin interface) the user immediately becomes visible to other users. To revert to the previous behavior, where the administrator must add two users to the same group using the Workbench admin interface in order for the users to see each other, change the new @Users.ActivatedUsersAreVisibleToOthers@ config to @false@.
 +
  h3. Dedicated keepstore process for each container
  
  When Arvados runs a container via @arvados-dispatch-cloud@, the @crunch-run@ supervisor process now brings up its own keepstore server to handle I/O for mounted collections, outputs, and logs. With the default configuration, the keepstore process allocates one 64 MiB block buffer per VCPU requested by the container. For most workloads this will increase throughput, reduce total network traffic, and make it possible to run more containers at once without provisioning additional keepstore nodes to handle the I/O load.
  * If you already have a robust permanent keepstore infrastructure, you can set @Containers.LocalKeepBlobBuffersPerVCPU@ to 0 to disable this feature and preserve the previous behavior of sending container I/O traffic to your separately provisioned keepstore servers.
  * This feature is enabled only if no volumes use @AccessViaHosts@, and no volumes have underlying @Replication@ less than @Collections.DefaultReplication@. If the feature is configured but cannot be enabled due to an incompatible volume configuration, this will be noted in the @crunch-run.txt@ file in the container log.
  
+ h3. Backend support for vocabulary checking
+ If your installation uses the vocabulary feature on Workbench2, you will need to update the cluster configuration by moving the vocabulary definition file to the node where @controller@ runs, and set the @API.VocabularyPath@ configuration parameter to the local path where the file was placed.
+ This will enable the vocabulary checking cluster-wide, including Workbench2. The @Workbench.VocabularyURL@ configuration parameter is deprecated and will be removed in a future release.
+ You can read more about how this feature works on the "admin page":{{site.baseurl}}/admin/metadata-vocabulary.html.
  h2(#v2_3_0). v2.3.0 (2021-10-27)
  
  "previous: Upgrading to 2.2.0":#v2_2_0
@@@ -296,7 -298,7 +302,7 @@@ Workbench 2 is now ready for regular us
  
  h3. New property vocabulary format for Workbench2
  
- (feature "#14151":https://dev.arvados.org/issues/14151) Workbench2 supports a new vocabulary format and it isn't compatible with the previous one, please read the "workbench2 vocabulary format admin page":{{site.baseurl}}/admin/workbench2-vocabulary.html for more information.
+ (feature "#14151":https://dev.arvados.org/issues/14151) Workbench2 supports a new vocabulary format and it isn't compatible with the previous one, please read the "metadata vocabulary format admin page":{{site.baseurl}}/admin/metadata-vocabulary.html for more information.
  
  h3. Cloud installations only: node manager replaced by arvados-dispatch-cloud
  
@@@ -411,7 -413,7 +417,7 @@@ h3. Python packaging chang
  
  As part of story "#9945":https://dev.arvados.org/issues/9945, the distribution packaging (deb/rpm) of our Python packages has changed. These packages now include a built-in virtualenv to reduce dependencies on system packages. We have also stopped packaging and publishing backports for all the Python dependencies of our packages, as they are no longer needed.
  
- One practical consequence of this change is that the use of the Arvados Python SDK (aka "import arvados") will require a tweak if the SDK was installed from a distribution package. It now requires the loading of the virtualenv environment from our packages. The "Install documentation for the Arvados Python SDK":/sdk/python/sdk-python.html reflects this change. This does not affect the use of the command line tools (e.g. arv-get, etc.).
+ One practical consequence of this change is that the use of the Arvados Python SDK (aka "import arvados") will require a tweak if the SDK was installed from a distribution package. It now requires the loading of the virtualenv environment from our packages. The "Install documentation for the Arvados Python SDK":{{ site.baseurl }}/sdk/python/sdk-python.html reflects this change. This does not affect the use of the command line tools (e.g. arv-get, etc.).
  
  Python scripts that rely on the distribution Arvados Python SDK packages to import the Arvados SDK will need to be tweaked to load the correct Python environment.
  
index 12415a83a05d04a310a2cdea6b5bd2f325906682,378690ad5aef257aa627c6a70020c415f8e2ba8e..411a79650b3421df477f32e0e96b574d068023ae
@@@ -234,6 -234,12 +234,12 @@@ Clusters
        # Timeout on requests to internal Keep services.
        KeepServiceRequestTimeout: 15s
  
+       # Vocabulary file path, local to the node running the controller.
+       # This JSON file should contain the description of what's allowed
+       # as object's metadata. Its format is described at:
+       # https://doc.arvados.org/admin/metadata-vocabulary.html
+       VocabularyPath: ""
      Users:
        # Config parameters to automatically setup new users.  If enabled,
        # this users will be able to self-activate.  Enable this if you want
        # user agreements.  Should only be enabled for development.
        NewUsersAreActive: false
  
 +      # Newly activated users (whether set up by an admin or via
 +      # AutoSetupNewUsers) immediately become visible to other active
 +      # users.
 +      #
 +      # On a multi-tenant cluster, where the intent is for users to be
 +      # invisible to one another unless they have been added to the
 +      # same group(s) via Workbench admin interface, change this to
 +      # false.
 +      ActivatedUsersAreVisibleToOthers: true
 +
        # The e-mail address of the user you would like to become marked as an admin
        # user on their first login.
        AutoAdminUserWithEmail: ""
        DefaultOpenIdPrefix: "https://www.google.com/accounts/o8/id"
  
        # Workbench2 configs
-       VocabularyURL: ""
        FileViewersConfigURL: ""
  
        # Idle time after which the user's session will be auto closed.
diff --combined lib/config/export.go
index 73ef2d0cfc29b53d39221ababf388116bd7fa538,fe8d45509ec4c6ae0a049239c33e36de362f7f92..d224924a24914a0d88af34330b34cff52ed3ec2e
@@@ -72,6 -72,7 +72,7 @@@ var whitelist = map[string]bool
        "API.MaxTokenLifetime":                                false,
        "API.RequestTimeout":                                  true,
        "API.SendTimeout":                                     true,
+       "API.VocabularyPath":                                  false,
        "API.WebsocketClientEventQueue":                       false,
        "API.WebsocketServerEventQueue":                       false,
        "AuditLogs":                                           false,
        "SystemRootToken":                                     false,
        "TLS":                                                 false,
        "Users":                                               true,
 +      "Users.ActivatedUsersAreVisibleToOthers":              false,
        "Users.AdminNotifierEmailFrom":                        false,
        "Users.AnonymousUserToken":                            true,
        "Users.AutoAdminFirstUser":                            false,
        "Workbench.UserProfileFormFields.*.*":                 true,
        "Workbench.UserProfileFormFields.*.*.*":               true,
        "Workbench.UserProfileFormMessage":                    true,
-       "Workbench.VocabularyURL":                             true,
        "Workbench.WelcomePageHTML":                           true,
  }
  
index 3d7d90f40c74a248ee9a1cb261dd536ddad4d63c,a1bb2330dfdd9b5b77dc60a63ea0793317652823..f8553c3eb758785edb6e023b10e8a9697085e74c
@@@ -240,6 -240,12 +240,12 @@@ Clusters
        # Timeout on requests to internal Keep services.
        KeepServiceRequestTimeout: 15s
  
+       # Vocabulary file path, local to the node running the controller.
+       # This JSON file should contain the description of what's allowed
+       # as object's metadata. Its format is described at:
+       # https://doc.arvados.org/admin/metadata-vocabulary.html
+       VocabularyPath: ""
      Users:
        # Config parameters to automatically setup new users.  If enabled,
        # this users will be able to self-activate.  Enable this if you want
        # user agreements.  Should only be enabled for development.
        NewUsersAreActive: false
  
 +      # Newly activated users (whether set up by an admin or via
 +      # AutoSetupNewUsers) immediately become visible to other active
 +      # users.
 +      #
 +      # On a multi-tenant cluster, where the intent is for users to be
 +      # invisible to one another unless they have been added to the
 +      # same group(s) via Workbench admin interface, change this to
 +      # false.
 +      ActivatedUsersAreVisibleToOthers: true
 +
        # The e-mail address of the user you would like to become marked as an admin
        # user on their first login.
        AutoAdminUserWithEmail: ""
        DefaultOpenIdPrefix: "https://www.google.com/accounts/o8/id"
  
        # Workbench2 configs
-       VocabularyURL: ""
        FileViewersConfigURL: ""
  
        # Idle time after which the user's session will be auto closed.
diff --combined sdk/go/arvados/config.go
index e7e60aed78aff7d34ef8483cce1795b15a99dcc5,8755bbd3e2fc88eca31062a7eb1b6380fb331b14..474ce33b0ee4e9b2262bbe1b16f9ed36c0c2af38
@@@ -77,6 -77,12 +77,12 @@@ type UploadDownloadRolePermissions stru
        Admin UploadDownloadPermission
  }
  
+ type ManagedProperties map[string]struct {
+       Value     interface{}
+       Function  string
+       Protected bool
+ }
  type Cluster struct {
        ClusterID       string `json:"-"`
        ManagementToken string
                WebsocketClientEventQueue      int
                WebsocketServerEventQueue      int
                KeepServiceRequestTimeout      Duration
+               VocabularyPath                 string
        }
        AuditLogs struct {
                MaxAge             Duration
                UnloggedAttributes StringSet
        }
        Collections struct {
-               BlobSigning              bool
-               BlobSigningKey           string
-               BlobSigningTTL           Duration
-               BlobTrash                bool
-               BlobTrashLifetime        Duration
-               BlobTrashCheckInterval   Duration
-               BlobTrashConcurrency     int
-               BlobDeleteConcurrency    int
-               BlobReplicateConcurrency int
-               CollectionVersioning     bool
-               DefaultTrashLifetime     Duration
-               DefaultReplication       int
-               ManagedProperties        map[string]struct {
-                       Value     interface{}
-                       Function  string
-                       Protected bool
-               }
+               BlobSigning                  bool
+               BlobSigningKey               string
+               BlobSigningTTL               Duration
+               BlobTrash                    bool
+               BlobTrashLifetime            Duration
+               BlobTrashCheckInterval       Duration
+               BlobTrashConcurrency         int
+               BlobDeleteConcurrency        int
+               BlobReplicateConcurrency     int
+               CollectionVersioning         bool
+               DefaultTrashLifetime         Duration
+               DefaultReplication           int
+               ManagedProperties            ManagedProperties
                PreserveVersionIfIdle        Duration
                TrashSweepInterval           Duration
                TrustAllContent              bool
                Insecure    bool
        }
        Users struct {
 +              ActivatedUsersAreVisibleToOthers      bool
                AnonymousUserToken                    string
                AdminNotifierEmailFrom                string
                AutoAdminFirstUser                    bool
                        Options              map[string]struct{}
                }
                UserProfileFormMessage string
-               VocabularyURL          string
                WelcomePageHTML        string
                InactivePageHTML       string
                SSHHelpPageHTML        string